Een CASE
expressie retourneert een waarde uit de THEN
gedeelte van de clausule. Je zou het als volgt kunnen gebruiken:
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
Merk op dat u iets met de geretourneerde waarde moet doen, b.v. vergelijk het met 1. Uw verklaring probeerde de waarde van een opdracht of test voor gelijkheid te retourneren, die geen van beide logisch zijn in de context van een CASE
/THEN
clausule. (Als BOOLEAN
een datatype was, dan zou de test voor gelijkheid zinvol zijn.)