TSQL Pivot 4值列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSQL Pivot 4值列相关的知识,希望对你有一定的参考价值。

在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帖子!

试图从平台上取得:

enter image description here

到一张宽桌子:

enter image description here

答案

您可以使用条件聚合:

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; 

以上是关于TSQL Pivot 4值列的主要内容,如果未能解决你的问题,请参考以下文章

SQL/TSQL:在多个表上使用 PIVOT

没有聚合函数的 TSQL Pivot

TSQL PIVOT/UNPIVOT 多个汇总列

使用动态Pivot时的总(SUM)行

TSQL - 将 Sales_Rep 行分组到列并将 DESCRIP 列显示为行 无聚合

TSQL - 具有范围的合并组?