2017-03-09 4 views
1

기본적으로 옮겨야 할 테이블이 있고 새 SUM 열이 DaySum에 추가되었습니다. 전치에는 모든 행이 포함되지는 않지만 결과 테이블에서 아래에서 볼 수 있듯이 지정된 행 (17-01-02에서 17-01-08까지) 만 포함됩니다.SQL Server 피벗 또는 피벗 해제

나는 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 

, 사전에 감사합니다.

답변

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; 
+0

감사 GurV. 당신의 대답은 거의 그것을 해결했습니다. 총 열은 모든 값을 합계하여 User1에 대해 총 11을 제공합니다. 총계는 7이어야합니다. –

+0

@OscarDuran - 주 데이터도 추가하기 때문입니다. 귀하의 요구 사항에 맞게 조정할 수 있습니다. – GurV

+0

저는이 경험이별로 없으며 몇 가지 변형을 시도했지만 지금까지 합계가 없습니다. 오른쪽 누계가 표시되도록 누락 된 항목을 게시 할 수 있습니까? –