SQL-Abfrage-Pivot-Tabellenzeilen in Spalten

Ich habe data wie diese, die ich Matrix-Ergebnis wie Zeilen in Spalte erstellen möchte.

Seq JobNo TrnDate TrnHour 1 J-000198 2016-04-02 5 2 J-000198 2016-04-03 4 3 J-000198 2016-04-04 8 4 J-000198 2016-04-05 7 5 J-000198 2016-04-06 2 6 J-000198 2016-04-07 3 7 J-000198 2016-04-08 6 

Am 2016-04-02 TrnDate der Tag war Samstag und so weiter. Ich möchte Ergebnis wie diese durch SQL-Abfrage und bevölkern in Gridview zu hinzufügen / bearbeiten von einem Benutzer.

 Saturday Sunday Monday Tuesday Wednesday Thursday Friday 02 03 04 05 06 07 08 5 4 8 7 2 3 6 

Ist das möglich? Bitte helfen Sie. Vielen Dank

Bearbeitet ———

Es ist ein vollständiger Monat Eintrag für jeden JobNo. Es macht jeden Tag Summe. Zum Beispiel, wenn ich eine weitere Zeile wie folgt addiere, mache es Summe für Samstag date 9 + 2 = 11 und Stunden 5 + 5 = 10. Ich möchte, dass es für jede Woche getrennt ist.

 Seq JobNo TrnDate TrnHour 8 J-000198 2016-04-09 5 

Versuche dies:

 SELECT col, [Saturday], [Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday] FROM ( SELECT JobNo, x.col, x.val, DATENAME(WEEKDAY, TrnDate) AS d FROM mytable CROSS APPLY ( VALUES ('Hour', TrnHour), ('Day', DATEPART(dd, TrnDate))) x(col, val) ) AS src PIVOT (SUM(val) FOR d IN ([Saturday], [Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday])) AS pvt 

Demo hier

Um die verschiedenen Wochen zu berücksichtigen, müssen Sie die SELECT in die SELECT Klausel der Abfrage aufnehmen, die verwendet wird, um die Quellentabelle der PIVOT Operation zu erzeugen:

 SELECT col, w, [Saturday], [Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday] FROM ( SELECT JobNo, x.col, x.val, DATEPART(WEEK, TrnDate) AS w, DATENAME(WEEKDAY, TrnDate) AS d FROM mytable CROSS APPLY ( VALUES ('Hour', TrnHour), ('Day', DATEPART(dd, TrnDate))) x(col, val) ) AS t PIVOT (SUM(val) FOR d IN ([Saturday], [Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday])) AS pvt ORDER BY w, col 

Demo hier

Das kannst du auch machen.

 SELECT info, [Saturday], [Sunday], [Monday], [Tuesday],[Wednesday],[Thursday], [Friday] FROM ( SELECT 'Total Hour' as info, JobNo, trnHour,DATENAME(WEEKDAY, TrnDate) AS d FROM JobTable union all SELECT 'Date' info,JobNo, datepart(day,TrnDate) as trnHour,DATENAME(WEEKDAY,TrnDate) AS d FROM JobTable ) AS src PIVOT (SUM(trnHour) FOR d IN ([Saturday], [Sunday], [Monday], [Tuesday],[Wednesday], [Thursday], [Friday])) AS pvt 

Woche weise

 SELECT [week],info, [Saturday], [Sunday], [Monday], [Tuesday],[Wednesday],[Thursday], [Friday] FROM ( SELECT 'Total Hour' as info, JobNo, trnHour,DATENAME(WEEKDAY, TrnDate) AS d,datepart(week,TrnDate) [week] FROM JobTable union all SELECT 'Date' info,JobNo, datepart(day,TrnDate) as trnHour,DATENAME(WEEKDAY,TrnDate) AS d,datepart(week,TrnDate) [week] FROM JobTable ) AS src PIVOT (SUM(trnHour) FOR d IN ([Saturday], [Sunday], [Monday], [Tuesday],[Wednesday], [Thursday], [Friday])) AS pvt