【发布时间】:2017-07-20 04:58:35
【问题描述】:
我想获得一个具有不同状态的数据透视表,并使用 SQL 查询从没有准备好的数据透视列的表中计算天数。 我试过用UNION ALL插入列,但是查询太长,不实用,效率不高。
我的桌子
数据表
Status |date
-------------
New |25/2/2017
Confirm |29/1/2017
状态表
Status
-------
New
Confirm
Finish
我想要的结果:
Status | 0-7|8-14|15-21|<30 ---->Days
------------------------------
New | 1 | 0 | 0 | 1
Confirm| 0 | 0 | 0 | 1
Finish | 0 | 0 | 0 | 0
已解决
解决方案
使用左连接状态表和数据表,然后使用case语句和pivot来解决它。感谢所有试图帮助我的人^^
【问题讨论】:
-
您可以使用“案例陈述”。参考这个stackoverflow.com/a/13526616/2960555
-
我尝试使用 pivot 和 case 进行组合,但结果只是显示 New 和 Confirm。我不确定是什么问题......
-
我找到了问题所在。问题是表中没有状态为 Finish 的数据。但是,我需要它在 sql server 2012 中显示。有人对此有任何解决方案吗?
标签: sql sql-server sql-server-2012