i有一个基本需要转换的表,并在其上添加了一个新的总和列(Daysum)。换位不会包括所有行,而只有指定的行(从17-01-02到17-01-08),如下所示。
。我一直在尝试枢轴和非分子的不同变化,但是我将列和值混合在一起。
这是我要修改的表:
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
我非常感谢您的帮助,谢谢您。
两个。
您可以使用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;