Wie kann ich die kombinieren/Zusammenführen von Spalten aus zwei SQL-Abfrage-Ergebnisse?
Habe ich eine Reihe von Daten in eine Tabelle mit dem Namen BWHourlyReadings
zum Beispiel:
ServiceID Hour InputOctets OutputOctets
========= ==== =========== =================
27222 1 383088 804249
27222 2 270529 688683
27222 3 247251 290124
... up to 24 hours of data
27222 24 236053 239165
28900 1 883011 914249
28900 3 444251 891124
... up to 24 hours of data
28900 24 123053 452165
Für jeden Tag gibt es bis zu 24 Messungen pro ServiceID
.
Habe ich soweit zwei separate PIVOT
Abfragen, eine für die InputOctets
Spalte und eine für die OutputOctets
Spalte (nur eine gezeigt, die hier aus Platzgründen):
-- Replace HourXIn with HourXOut for OutputOctets
SELECT ServiceID, [1] AS 'Hour1In', [2] AS 'Hour2In', [3] AS 'Hour3In', ...
FROM
(
SELECT
ServiceID,
Hour,
TotalInputOctets -- Other query has OutputOctets here instead
FROM
BWHourlyReadings
) AS bw
PIVOT
(
MAX(TotalInputOctets) -- Other query has OutputOctets here instead
FOR [Hour] IN ([1], [2], [3], ... [24])
) AS pvt
Das gibt mir meine InputOctets
und OutputOctets
in zwei separate Ergebnis-sets, zum Beispiel:
Den PIVOT
Abfrage-Ergebnis InputOctets
:
ServiceID Hour1In Hour2In Hour3In . Hour24In
========= ======= ======= ======= ========
27222 383088 270529 247251 236053
28900 883011 0 444251 123053
Den PIVOT
Abfrage-Ergebnis OutputOctets
:
ServiceID Hour1Out Hour2Out Hour3Out .. Hour24Out
========= ======== ======== ======== ========
27222 804249 688683 290124 239165
28900 914249 0 891124 452165
Ich brauche einen Bericht zu erstellen, wie diese:
ServiceID Hour1In Hour1Out Hour2In Hour2Out Hour3In Hour3Out .. Hour24In Hour24Out
========= ======= ======== ======= ======== ======= ======== ======= ========
27222 383088 804249 270529 688683 247251 290124 236053 239165
28900 883011 914249 0 0 444251 891124 123053 452165
Wie kann ich die Zusammenführung der beiden query-Ergebnisse zu produzieren, die den Bericht oben?
Update:
Ich habe aktualisiert die Daten im gewünschten Berichtsformat entsprechen die Daten in der Quell-Tabelle-Beispiel. Ich entschuldige mich für die Verwirrung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe keine Ahnung, wie Sie berechnen Sie Ihre HourX(In|Out) von Ihrem (Input|Output) - Oktetts, aber Folgendes könnte für Sie arbeiten
Getestet mit folgenden Daten.
verwenden Sie union oder union all-Zusammenführung der Ergebnisse der 2.
nun, Sie haben zwei Fragen... so würde ich denken, Sie könnte verwenden Sie einfach diese beiden Abfragen als "Tabellen" in eine wrapper-Abfrage, und fügen Sie Sie
oder verwenden Sie INNER JOIN, wenn Sie bevorzugen. das ist so ziemlich das gleiche wie zwei Ansichten aus der Sie Ihre Abfragen, und dann das verbinden dieser Ansichten.
PS: NICHT GETESTET ... funktionieren würde, gerade mit SQL, aber ich habe keine wirkliche Erfahrung mit pivot-Tabellen und das könnte die auflegen -
Erstellen einer @table-variable und setzen Sie alle Spalten in einer Tabelle und legen Sie es alle Werte in einer Tabelle und zuletzt wählen Sie aus, die Tabelle.
heißt, wenn Sie wollen, 24-Spalte erstellen Sie dann die Tabelle mit 24 Spalten-und einfügen, indem Sie eine Zeile in dieser
Diese Antwort kommt aus der Agile - /YAGNI Schule von SQL-Abfragen.....
Macht der Bericht absolut zu sein in diesem format? Ein einfacher, besser verwaltbar Abfrage zurückgeben könnte, die richtigen Informationen, es würde einfach sein, präsentiert sich etwas anders. Die folgende Abfrage gibt die Daten in ein etwas anderes format?