编写数据透视查询时 SELECT 语句是否有限制

问题描述 投票:0回答:1

我正在尝试针对 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_NumberCenters_Center_Code被标记为非法列名。

但是如果我去掉枢轴语句,那么这个查询就可以工作。

Select Centers_RiskID, Centers_Change_Number, Centers_Center_Code
   from Centers

我正在使用 SQLQuery 应用程序来测试查询。

sql sql-server pivot
1个回答
0
投票

据我了解,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;

这是一个有用的资源链接

© www.soinside.com 2019 - 2024. All rights reserved.