TSQL Pivot 4值列

Chr*_*isD 3 sql t-sql sql-server pivot sql-server-2008

在SQL Server 2008中,我尝试使用Period列将下面的表格格式"旋转"为宽格式(在实际数据中有5个不同的句点).

我已经搜索但尚未找到解决方案.我已经提到https://www.tangrainc.com/blog/2009/01/pivoting-on-multiple-columns/#comment-504但无法翻译的逻辑> 2的值列-这是我需要的.

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

谢谢,克里斯

PS.第一个S/O帖子!

试图从平台上取得:

在此输入图像描述

到一张宽桌子:

在此输入图像描述

Yog*_*rma 5

您可以使用条件聚合:

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; 
Run Code Online (Sandbox Code Playgroud)