Pivot SQL Server ou unpivot

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;