UN CASE
expresión devuelve un valor de THEN
parte de la cláusula. Podrías usarlo así:
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
Tenga en cuenta que debe hacer algo con el valor devuelto, p. compárelo con 1. Su declaración intentó devolver el valor de una asignación o prueba de igualdad, ninguno de los cuales tiene sentido en el contexto de un CASE
/THEN
cláusula. (Si BOOLEAN
fuera un tipo de datos, entonces la prueba de igualdad tendría sentido).