微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 44 行结果旋转 4 列

如何解决为 44 行结果旋转 4 列

我有一个 sql Server 查询,用于获取 44 商店市场链的销售数据,它包括每个商店的 4 个值(销售额、销货成本、 GP 和 GP Margin),我声明了一个 CTE 并为每个商店加入 44 次,以获得 4 个值作为列每个商店如下图所示:

查询Query1

Result 1

但是当我尝试将 PIVOT 函数与动态 sql 一起使用时,它返回多个空值,如下所示:

查询Query2 Result 2

表##tbl1 包含我想要透视的数据集: ##tbl1

我使用了以下查询:(三个点代表要旋转的其余列)

select * from ##tbl1 

pivot (sum(total_sales)     for s in ([50001 Sales],[50002 Sales],...)) as pv_tb 
pivot (sum(Margin)          for m in ([50001 margin],[50002 margin],...)) as pv_tb1
pivot (sum(total_profit)    for p in ([50001 profit],[50002 profit],...)) as pv_tb2
pivot (sum(total_cost)      for c in ([50001 cost],[50002 cost],...)) as pv_tb3

我还使用动态 sql 在数据透视表中传递列名,而不必单独键入每个列名,但为了排除故障,我只是向您展示了查询的外观。

对于这个 132 列的结果,我无法使用 CROSS APPLYUNPIVOT,这很难维护。

谁能帮我找到比这更容易的方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。