SQL 中的 Pivot 语法错误,为啥我得到不正确的结果?

Posted

技术标签:

【中文标题】SQL 中的 Pivot 语法错误,为啥我得到不正确的结果?【英文标题】:Pivot Syntax Error in SQL , Why am I getting Incorrect results?SQL 中的 Pivot 语法错误,为什么我得到不正确的结果? 【发布时间】:2021-10-28 20:14:38 【问题描述】:

请有人帮我理解这个 Pivot 语法有什么问题? 感谢@Ross Bush 修复了我的查询,但我没有得到想要的输出,我想要行中的 PersonFK 值,但是在执行下面的查询后,输出是这样的 -

这是原始表格-

RequisitionID(整数,非空) RoleCode(nvarchar(100),不为空) PersonFK (int, null)

SELECT RequisitionID,
   1 AS One,
   2 AS Two,
   3 AS Three
FROM
(SELECT RequisitionID,
      RoleCode,
      PersonFK
  FROM RequisitionHiringTeam
  WHERE RoleCode IN (1,
                  2,
                  3)) as src 
  PIVOT (
  max(PersonFK) 
  FOR RoleCode 
  IN ([1],[2],[3])
) as pvt
GO

【问题讨论】:

请用您正在使用的数据库引擎标记它。 请不要张贴images的代码和数据,没有人可以测试图像。 【参考方案1】:

如果您使用像我这样的列别名,则需要将它们放在括号中 ->

SELECT
    ...[1] As One, [2] As Two..
FROM
(
 <query>)as src
PIVOT( 
...
FOR RoleCode IN
IN ([1],[2],[3])
)as pvt

【讨论】:

谢谢!解决了错误,但我没有得到所需的输出。【参考方案2】:

我修复了我的查询,它给了我想要的结果 =

SELECT RequisitionID,
   [1] AS One,
   [2] AS Two,
   [3] AS Three
FROM
(SELECT RequisitionID,
      RoleCode,
      PersonFK
 FROM RequisitionHiringTeam
) src 
PIVOT (
  SUM(PersonFK) 
  FOR RoleCode 
  IN ([1],[2],[3])
)pvt
GO

我需要在第一个 select 语句中为列添加 [ ... ]。输出 =

【讨论】:

以上是关于SQL 中的 Pivot 语法错误,为啥我得到不正确的结果?的主要内容,如果未能解决你的问题,请参考以下文章

在关键字“pivot”附近出现语法错误,提示语法不正确。我在这里想念啥

SQL 中的 PIVOT 给出错误 - ORA-00933: SQL 命令未正确结束

为啥我得到 SQL 错误 110 虽然列号是正确的?

在表上使用 Pivot 函数时出现缺少逗号错误

为啥我得到一个无效语法的错误(urls.py,第 34 行)

SQL / MS Access - 为啥这个 CASE 不起作用?