sql - 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 帖子!
试图从平桌上获得:
到一张宽桌子:
解决方案
您可以使用条件聚合:
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;
推荐阅读
- json - 如何为列表SwiftUI中的每个项目添加一个布尔变量
- ios - PickerView 没有从 Array 获取更新的值
- flask - 2021-02-16 10:43:57,123 应用程序中的错误:/ GET 异常?
- java - 如果从数据库中获取空值,如何设置 NULL?我收到 500 个内部服务器错误
- linux - 如何减少(或优化)最近构建的 LFS 的大小?
- sql-server - 有没有办法在 Guidewire 中执行生成表查询?
- python - 如何用python计算工作日数
- apache-spark - 输入 Apache Spark MlLib
- discord - 嵌入格式内嵌
- mysql - 仅加入子表中的一行