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 ;