Un CASE
expression renvoie une valeur à partir de THEN
partie de la clause. Vous pouvez l'utiliser ainsi :
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
Notez que vous devez faire quelque chose avec la valeur renvoyée, par ex. comparez-le à 1. Votre instruction a tenté de renvoyer la valeur d'une affectation ou d'un test d'égalité, dont aucun n'a de sens dans le contexte d'un CASE
/THEN
clause. (Si BOOLEAN
était un type de données, alors le test d'égalité aurait du sens.)