sql - 如何在此 SQL Pivot 查询中插入 TOTAL 列?

标签 sql sql-server t-sql pivot

我有一个运行良好的 SQL Pivot 查询。但是,我需要在输出中添加 TOTAL 列(这将是所有月份的总和)。

我的查询(摘录)如下:

...

SELECT [Year],[Property], ISNULL([Jan],0) as [Jan], ISNULL([Feb],0) as [Feb], ISNULL([Mar],0) as [Mar], ISNULL([Apr],0) as [Apr], ISNULL([May],0) as [May], ISNULL([Jun],0) as [Jun],
       ISNULL([Jul],0) as [Jul], ISNULL([Aug],0) as [Aug], ISNULL([Sep],0) as [Sep], ISNULL([Oct],0) as [Oct], ISNULL([Nov],0) as [Nov], ISNULL([Dec],0) as [Dec]


FROM (

SELECT [MthName], [Year], [RN], [Property] from CTE1


UNION ALL

SELECT [MthName], [Year], [RN], [Property] from CTE2


)x

PIVOT(SUM(x.[RN]) 
      FOR x.[MthName] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable

ORDER BY  [Property], [Year] DESC

该查询的输出摘录如下所示:

 Year   Property    Jan     Feb     Mar     Apr     May     Jun   Jul   Aug     Sep   Oct   Nov    Dec
 2018   XYZ         3261    2955    3045    2118    1917    869   1772  1598    834   1254  537    415
 2017   XYZ         ...

我需要在此输出的末尾添加一个“总计”列。我怎样才能做到这一点?

最佳答案

将此部分添加到您的选择查询的最后:

(ISNULL([Jan],0)+ ISNULL([Feb],0) + ISNULL([Mar],0)+ ISNULL([Apr],0)+ ISNULL([May],0)+ ISNULL([Jun],0) + ISNULL([Jul],0)+ ISNULL([Aug],0)+ ISNULL([Sep],0)+ ISNULL([Oct],0) + ISNULL([Nov],0)+ ISNULL([Dec],0)) as [Total]

关于sql - 如何在此 SQL Pivot 查询中插入 TOTAL 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900230/

相关文章:

sql - 有没有一种方法可以通过子查询返回多个结果?

python - Pymssql 能否与 MS SQL Server 建立安全连接 (SSL)?

t-sql - 合并 - 匹配时则不执行任何操作

sql-server - 如果两个时间值之间有小时数,则使用 SUM 将行透视为列

sql - 查找重复项并更新 T-SQL

sql - 在 Oracle 中保持表同步

mysql - 如何只针对 MySql 中的每个 id 获取一行

sql-server - ssis 合并连接转换左外连接,其中 col 为空

mysql - 错误: Unknown column 'makeId' in 'field list'

sql - SQL Server 中从字符串转换为 uniqueidentifier 错误时转换失败