我正在尝试针对 SQL Server 数据库编写一个数据透视查询,而 SQLQuery 抱怨语法问题。 (背景:我有一个使用不同表的工作枢轴查询,并且我正在尝试为新表创建一个版本。)
我一直在阅读有关数据透视查询的文章并搜索 SELECT 部分的限制,但尚未找到解释。我收到的错误消息是我使用了无效的列名,但如果我只运行没有数据透视部分的 Select 查询,那么它就可以工作。
我有一张桌子中心,其中有列:
Centers_RiskID (varchar(21), not null)
Centers_Change_Number (smallint, not null)
Centers_Center_Code (varchar(5), not null)
Centers_Change_Indicator (bit, not null)
失败的查询是:
Select Centers_RiskID, Centers_Change_Number, Centers_Center_Code
from Centers
pivot (max(Centers_Change_Number) for [Centers_Center_Code] in ([APP], [HQ], [MSFT])) as pivot_table1
第一行的Centers_Change_Number和Centers_Center_Code被标记为非法列名。
但是如果我去掉枢轴语句,那么这个查询就可以工作。
Select Centers_RiskID, Centers_Change_Number, Centers_Center_Code
from Centers
我正在使用 SQLQuery 应用程序来测试查询。
据我了解,SELECT 语句应该在应用旋转操作后引用列
SELECT Centers_RiskID, [APP], [HQ], [MSFT]
FROM (
SELECT Centers_RiskID, Centers_Center_Code, Centers_Change_Number
FROM Centers
) AS SourceTable
PIVOT (
MAX(Centers_Change_Number)
FOR Centers_Center_Code IN ([APP], [HQ], [MSFT])
) AS pivot_table1;
这是一个有用的资源链接