我有一个基本上需要转置的表,并添加了一个新的SUM列(DaySum)。换位不包括所有行,但只包括指定的行(从17-01-02到17-01-08),如下面的结果表中所示。
我一直在尝试Pivot和Unpivot的不同变体,但是我将列和值混合在一起。
这是我试图修改的表格:
Date User1 User2 User3
------------------------------------
17-01-01 1 0 1
Week1 0 1 0
17-01-02 1 0 1
17-01-03 1 0 1
17-01-04 1 1 1
17-01-05 1 0 0
17-01-06 1 0 0
17-01-07 1 0 0
17-01-08 1 1 0
Week2 3 0 2
结果应如下所示:
Name 17-01-02 17-01-03 17-01-04 17-01-05 17-01-06 17-01-07 17-01-08 DaySum Week2
-------------------------------------------------------------------------------------------
User1 1 1 1 1 1 1 1 7 3
User2 0 0 1 0 0 0 1 2 0
User3 1 1 1 0 0 0 0 3 2
非常感谢您的帮助,谢谢您。
答案 0 :(得分:1)
两个
您可以使用CROSS APPLY
进行透视和聚合以进行旋转。
这样的事情:
select
username,
sum(case when date = '2017-01-01' then val end) [2017-01-01],
sum(case when date = '2017-01-02' then val end) [2017-01-02],
sum(case when date = '2017-01-03' then val end) [2017-01-03],
sum(case when date = '2017-01-04' then val end) [2017-01-04],
. . .
sum(val) total
from (
select t.date, x.username, x.val
from your_table t
cross apply (
values ('User1', User1),
('User2', User2),
('User3', User3)
) x (username, val)
) t
group by username;