La siguiente imagen es parte de las Vistas del sistema de Microsoft SQL Server 2008 R2. De la imagen podemos ver que la relación entre sys.partitions
y sys.allocation_units
depende del valor de sys.allocation_units.type
. Entonces, para unirlos, escribiría algo similar a esto:
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)
THEN a.container_id = p.hobt_id
WHEN a.type IN (2)
THEN a.container_id = p.partition_id
END
Pero el código superior da un error de sintaxis. Supongo que es por la CASE
declaración. ¿Alguien puede ayudar a explicar un poco?
Añadir mensaje de error:
Mensaje 102, Nivel 15, Estado 1, Línea 6 Sintaxis incorrecta cerca de '='.