รูปภาพต่อไปนี้เป็นส่วนหนึ่งของ Microsoft SQL Server 2008 R2 System Views จากภาพที่เราจะเห็นว่าความสัมพันธ์ระหว่างsys.partitions
และขึ้นอยู่กับมูลค่าของsys.allocation_units
sys.allocation_units.type
ดังนั้นเพื่อรวมเข้าด้วยกันฉันจะเขียนสิ่งที่คล้ายกันนี้:
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
แต่โค้ดด้านบนให้ข้อผิดพลาดทางไวยากรณ์ ฉันเดาว่าเป็นเพราะCASE
คำสั่ง ใครก็ได้ช่วยอธิบายหน่อย
เพิ่มข้อความแสดงข้อผิดพลาด:
ข่าวสารเกี่ยวกับ 102 ระดับ 15 สถานะ 1 บรรทัด 6 ไวยากรณ์ไม่ถูกต้องใกล้ '='