首页 > 解决方案 > TSQL Pivot 4 值列

问题描述

在 SQL Server 2008 中,我尝试使用 Period 列将下面的表格格式“透视”为宽格式(在实际数据中有 5 个不同的 Period)。

我已经搜索但尚未找到解决此问题的方法。我参考了https://www.tangrainc.com/blog/2009/01/pivoting-on-multiple-columns/#comment-504但无法将逻辑转换为 >2 值列 - 我需要。

有什么想法吗?您可能已经猜到我不是 SQL 专家。使用 SQL Server 2008。

谢谢,克里斯

附言。第一个 S/O 帖子!

试图从平桌上获得:

在此处输入图像描述

到一张宽桌子:

在此处输入图像描述

标签: sqlsql-serversql-server-2008tsqlpivot

解决方案


您可以使用条件聚合:

select Cat, Dept,
       sum(case when Period = 'LW' then New else 0 end) as [Net LW],
       sum(case when Period = 'LY' then New else 0 end) as [Net LY],
       sum(case when Period = 'LW' then Gross else 0 end) as [Gross LW],
       sum(case when Period = 'LY' then Gross else 0 end) as [Gross LY],
       sum(case when Period = 'LW' then Profit else 0 end) as [Profit LW],
       sum(case when Period = 'LY' then Profit else 0 end) as [Profit LY],
       sum(case when Period = 'LW' then Units else 0 end) as [Units LW],
       sum(case when Period = 'LY' then Units else 0 end) as [Units LY]
from table t
group by Cat, Dept; 

推荐阅读