SQL Server Pivot or Unpivot



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;