J'ai une table qui doit être transposée, et une nouvelle colonne SUM a été ajoutée (DaySum). La transposition n'inclura pas toutes les lignes, mais seulement celles spécifiées (du 17-01-02 au 17-01-08) comme vous pouvez le voir ci-dessous dans le tableau des résultats.
J'ai essayé différentes variations de Pivot et Unpivot, mais j'ai mélangé les colonnes et les valeurs.
C'est le tableau que j'essaie de modifier:
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
Le résultat devrait ressembler à ceci:
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
J'apprécie grandement votre aide, merci d'avance.
Tous les deux.
Vous pouvez utiliser CROSS APPLY
pour le pivotement et l'agrégation pour le pivotement.
Quelque chose comme ça:
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;