Ett CASE
uttryck returnerar ett värde från THEN
del av klausulen. Du kan använda det så här:
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
Observera att du behöver göra något med det returnerade värdet, t.ex. jämför det med 1. Ditt uttalande försökte returnera värdet av en uppgift eller test för likvärdighet, vilket inte är vettigt i sammanhanget av en CASE
/THEN
klausul. (Om BOOLEAN
var en datatyp så skulle testet för jämlikhet vara vettigt.)