Ein CASE expression gibt einen Wert aus THEN zurück Teil der Klausel. Sie könnten es folgendermaßen verwenden:
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
Beachten Sie, dass Sie etwas mit dem zurückgegebenen Wert tun müssen, z. Vergleichen Sie es mit 1. Ihre Anweisung hat versucht, den Wert einer Zuweisung zurückzugeben oder auf Gleichheit zu prüfen, was im Kontext eines CASE nicht sinnvoll ist /THEN Klausel. (Falls BOOLEAN ein Datentyp wäre, dann würde der Test auf Gleichheit Sinn machen.)