Sum une colonne unique en plusieurs colonnes en fonction des critères SQL Server

En ce moment, je recueille une sum de fois en fonction du regroupement par partie, travail, machine et type.

Je souhaite que les heures additionnées soient réparties sur plusieurs colonnes plutôt que sur plusieurs lignes en fonction du type. Comment puis-je faire ceci?

Voici mon code

SELECT m.[machineName] ,pr.[jobNumber] ,p.[partNumber] ,sc.[type] ,SUM(pl.[elapsedTime]) AS elapsedTime FROM wincc.dbo.productionLog pl INNER JOIN wincc.dbo.machines m ON pl.[machineId] = m.id INNER JOIN wincc.dbo.productionRuns pr ON pl.[productionRunId] = pr.id INNER JOIN wincc.dbo.parts p ON pr.[partId] = p.Id INNER JOIN wincc.dbo.statusCodes sc ON pl.[statusCodeId] = sc.id GROUP BY m.[machineName] ,pr.[jobNumber] ,p.[partNumber] ,sc.[type] 

Qui produit:

entrez la description de l'image ici

Mais je veux:

entrez la description de l'image ici

Merci à tous!

C'est une forme de pivoting de table. Voici une façon de le faire avec l' conditional aggregation :

 SELECT m.[machineName] ,pr.[jobNumber] ,p.[partNumber] ,SUM(CASE WHEN sc.Type = 'planned downtime' then pl.[elapsedTime] END) AS plannedDT ,SUM(CASE WHEN sc.Type = 'unplanned downtime' then pl.[elapsedTime] END) AS unplannedDT ,SUM(CASE WHEN sc.Type = 'production' then pl.[elapsedTime] END) AS production ,SUM(CASE WHEN sc.Type = 'rework' then pl.[elapsedTime] END) AS rework FROM wincc.dbo.productionLog pl INNER JOIN wincc.dbo.machines m ON pl.[machineId] = m.id INNER JOIN wincc.dbo.productionRuns pr ON pl.[productionRunId] = pr.id INNER JOIN wincc.dbo.parts p ON pr.[partId] = p.Id INNER JOIN wincc.dbo.statusCodes sc ON pl.[statusCodeId] = sc.id GROUP BY m.[machineName] ,pr.[jobNumber] ,p.[partNumber]