Следующее изображение является частью Microsoft SQL Server 2008 R2 System Views. Из изображения видно, что соотношение между 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 Неверный синтаксис рядом с '='.