Наступне зображення є частиною переглядів системи 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
заяву. Хтось може допомогти трохи пояснити?
Додати повідомлення про помилку:
Msg 102, рівень 15, стан 1, рядок 6 Неправильний синтаксис біля '='.