CASE
výraz vrátí hodnotu z THEN
část klauzule. Můžete to použít takto:
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
Všimněte si, že s vrácenou hodnotou musíte něco udělat, např. porovnejte to s 1. Váš příkaz se pokusil vrátit hodnotu přiřazení nebo testu rovnosti, přičemž ani jeden z nich nedává smysl v kontextu CASE
/THEN
doložka. (Pokud BOOLEAN
byl datový typ, pak by test rovnosti dával smysl.)