L'image suivante fait partie de Microsoft SQL Server 2008 R2 System Views. Sur cette image, nous pouvons voir que la relation entre sys.partitions
y sys.allocation_units
dépend de la valeur de sys.allocation_units.type
. Pour les réunir, j'écrirais donc quelque chose de semblable à ceci :
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
Mais le code supérieur donne une erreur de syntaxe. Je suppose que c'est à cause du CASE
déclaration. Quelqu'un peut-il m'aider à expliquer un peu ?
Ajouter un message d'erreur :
Msg 102, Level 15, State 1, Line 6 Syntaxe incorrecte près de '='.