次の画像は、Microsoft SQL Server 2008 R2のシステムビューの一部です。画像から、sys.partitions
とsys.allocation_units
の値の関係がに依存していることがわかりますsys.allocation_units.type
。したがって、それらを結合するには、次のようなものを書きます。
SELECT *
FROM sys.indexes i
JOIN sys.partitions p
ON i.index_id = p.index_id
JOIN sys.allocation_units a
ON CASE
WHEN a.type IN (1, 3)
THEN a.container_id = p.hobt_id
WHEN a.type IN (2)
THEN a.container_id = p.partition_id
END
しかし、上のコードは構文エラーを出します。それはCASE
声明のせいだと思います。誰かが少し説明するのを手伝ってくれる?
エラーメッセージを追加:
メッセージ102、レベル15、状態1、行6「=」付近の構文が正しくありません。