SQL Pivot中为值添加别名遇语法错误,求解决方法
解决PIVOT子句中别名语法错误的问题
你的SQL语句错误原因是PIVOT的IN子句中不能直接为转置后的列指定别名,SQL Server的PIVOT语法要求IN子句仅列出需要转置的字段值(用方括号包裹),别名需要在外部SELECT语句中定义。
修正后的SQL语句如下:
SELECT trntypeid, trnstatusid, [300] AS [Invalid BSB], [301] AS [GeneralDecline] FROM ( SELECT trntypeid, trnstatusid, errorcodeid FROM trndatacore WHERE companyid = 374 AND trntypeid = 7 AND trndatetime BETWEEN '2023-01-01' AND '2023-03-01' AND trnstatusid IN (11,13) ) AS Sourcetable PIVOT ( COUNT(errorcodeid) FOR errorcodeid IN ([300], [301]) ) AS ClientReport
关键修正点:
- 将PIVOT的IN子句简化为仅列出需要转置的errorcodeid值:
IN ([300], [301]),移除此处的别名定义 - 在最外层的SELECT语句中,为PIVOT生成的[300]、[301]列指定别名:
[300] AS [Invalid BSB], [301] AS [GeneralDecline] - 避免使用
SELECT *,明确列出需要的列,同时完成别名映射
这样修改后,就能正确执行并得到带有自定义列名的透视结果。
内容的提问来源于stack exchange,提问作者Brad
相关产品推荐
相关产品推荐

