以下图像是Microsoft SQL Server 2008 R2系统视图的一部分。 从图中我们可以看到sys.partitions和sys.allocation_units之间的关系取决于sys.allocation_units的值。 所以为了将它们结合在一起,我会写下类似这样的东西: 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'='附近语法不正确。