Serveur SQL. Rejoindre deux arrays na vue, prendre des lignes d'un et transformer en colonnes

Je suis assez nouveau sur SQL Server, donc je ne sais pas vraiment ce que je fais avec ça. J'ai deux tables, qui pourraient ressembler à ceci:

Tableau 1

------------------------------ | ID | customer | Date | ------------------------------ | 1 | company1 | 01/08/2014 | ------------------------------ | 2 | company2 | 10/08/2014 | ------------------------------ | 3 | company3 | 25/08/2014 | ------------------------------ 

Tableau 2

 ------------------------- | ID | Status | Days | ------------------------- | 1 | New | 6 | ------------------------- | 1 | In Work | 25 | ------------------------- | 2 | New | 17 | ------------------------- | 3 | New | 14 | ------------------------ | 3 | In Work | 72 | ------------------------- | 3 | Complete | 25 | ------------------------- 

Ce que je dois faire est de join en fonction de l'ID, et créer de nouvelles colonnes pour montrer combien de time chaque ID a été dans chaque statut. Chaque fois qu'une command passe à un nouveau statut, une nouvelle ligne est ajoutée et le nombre de jours est compté comme dans le 2ème tableau ci-dessus. Ce que j'ai besoin de créer à partir de cela, devrait ressembler à ceci:

 --------------------------------------------------------- | ID | customer | Date | New | In Work | Complete | --------------------------------------------------------- | 1 | company1 | 01/08/2014 | 6 | 25 | | --------------------------------------------------------- | 2 | company2 | 10/08/2014 | 17 | | | --------------------------------------------------------- | 3 | company3 | 25/08/2014 | 14 | 72 | 25 | --------------------------------------------------------- 

Alors qu'est-ce que je dois faire pour créer cela?

Merci pour toute aide, car je dis que je suis assez nouveau à ce sujet.


Je suggère que le lien d'AHiggins est un meilleur candidat pour marquer ceci comme dupe plutôt que celui qui a été effectivement choisi parce que son lien implique une jointure.

     WITH [TimeTable] AS ( SELECT T1.ID, T1.[Date], T2.[Status] AS [Status], T2.[Days] FROM dbo.Table1 T1 INNER JOIN dbo.Table2 T2 ON T2.ID = T1.ID ) SELECT * FROM [TimeTable] PIVOT (MAX([Days]) FOR [Status] IN ([New], [Complete], [In Work])) TT ;