Poniższy obraz jest częścią widoków systemu Microsoft SQL Server 2008 R2. Z obrazu widać, że zależność między sys.partitions
i sys.allocation_units
zależy od wartości sys.allocation_units.type
. Aby połączyć je razem, napisałbym coś podobnego do tego:
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
Ale górny kod daje błąd składni. Myślę, że to z powodu CASE
oświadczenia. Czy ktoś może pomóc trochę wyjaśnić?
Dodaj komunikat o błędzie:
Msg 102, poziom 15, stan 1, wiersz 6 Niepoprawna składnia w pobliżu znaku „=”.