目前有一个包含状态类型的列和一个包含日期的单独列。我想要做的是为每种状态类型创建新列。使用case when语句创建了列名,但不能按那些语句进行分组。
目前,该表推出了以下内容:
Reference | Status | Date
----- | ----------- | -----
1 | Approve | 1/1/2017
1 | In Progress | 1/2/2017
2 | Approve | 1/1/2017
2 | In Progress | 1/2/2017
2 | Close | 1/3/2017
想采取这个并做出:
Reference | Approve | In Progress | Close
--------- | -------- | ----------- | -----
1 | 1/1/2017 | 1/2/2017 |
2 | 1/1/2017 | 1/2/2017 | 1/3/2017
有很多其他选择,并且意图是自动导出到excel / run,所以试图避免临时表。
我不知道这种情况何时适当,但我很难找到更好的解决方案。
答案 0 :(得分:0)
这样的事情应该基于你提供的表格(我还处理空值以获得你需要的输出): -
ShopSalesController
答案 1 :(得分:0)
您可以在sql server中使用pivot
select * from #yourStatus
pivot( max(date) for [Status] in ([Approve], [In Progress],[Close])) p
你的桌子:
create table #yourStatus (Reference int, Status varchar(20), Date date)
insert into #yourstatus (
Reference , Status , Date ) values
( 1 ,'Approve','1/1/2017')
,( 1 ,'In Progress','1/2/2017')
,( 2 ,'Approve','1/1/2017')
,( 2 ,'In Progress','1/2/2017')
,( 2 ,'Close','1/3/2017')