CASE
wyrażenie zwraca wartość z THEN
część klauzuli. Możesz go użyć w ten sposób:
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) AND a.container_id = p.hobt_id THEN 1
WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1
ELSE 0
END = 1
Zauważ, że musisz coś zrobić ze zwróconą wartością, np. porównaj to do 1. Twoja instrukcja próbowała zwrócić wartość przypisania lub testu na równość, z których żaden nie ma sensu w kontekście CASE
/THEN
klauzula. (Jeśli BOOLEAN
był typem danych, wtedy test równości miałby sens).