Hmm, nur den richtigen Titel zu bekommen dauerte 10 Minuten und ich bin mir nicht sicher, ob ich es meine Frage zu decken. Einige Hintergrundinformationen: Meine Tabelle enthält Sicherungsergebnisse von mehreren Servern. Der Einfachheit halber einige Zeilen nur für einen Server:SQL Server: Pivot auf mehreren Spalten
hostname type_id result_id received
----------------------------------------
SBS2011 5 1 2016-06-28
SBS2011 5 1 2016-06-28
SBS2011 5 1 2016-06-29
SBS2011 5 1 2016-06-29
SBS2011 5 1 2016-06-30
SBS2011 6 1 2016-06-30
SBS2011 5 2 2016-07-01
SBS2011 6 2 2016-07-01
SBS2011 6 2 2016-07-01
SBS2011 5 1 2016-07-02
SBS2011 6 1 2016-07-02
SBS2011 5 1 2016-07-03
SBS2011 6 1 2016-07-03
SBS2011 5 1 2016-07-04
SBS2011 6 1 2016-07-04
eine PIVOT verwenden kann ich einen Überblick über die Menge von Backups für jeden Wochentag erhalten:
select * from
(
select [hostname], [type_id], datepart(w, received) as workday from [backups]
) TEMP
pivot (
count([type_id])
for workday in
([1], [2], [3], [4], [5], [6], [7])
) as pvt;
Ergebnisse in:
hostname 1 2 3 4 5 6 7
--------------------------------------
SBS2011 2 2 2 2 2 3 2
Aber dieses Ergebnis vermisst einige wichtige Informationen. Als result_id ‚Erfolg‘ ist gleich und result_id ‚nicht bestanden‘ ist gleich, würde Ich mag das Ergebnis haben, wie folgt aussehen:
hostname 1:1 1:2 2:1 2:2 3:1 3:2 4:1 4:2 5:1 5:2 6:1 6:2 7:1 7:2
-------------------------------------------------------------------
SBS2011 2 0 2 0 2 0 2 0 2 0 0 3 2 0
wo column 1: 1 ist eine Abkürzung für Sonntag: Erfolg und 1: 2 Sonntag gleich: gescheitert. Für einige Backup-Typ-IDs kann auch eine Spalte 1: 3 für Sonntag vorhanden sein: Wiederholen.
Als ich mich umsah, stellte ich fest, dass ein DYNAMIC PIVOT der Schlüssel zur Lösung dieses Rätsels sein könnte. Andere schlagen eine PARTITION vor, aber ich habe noch nicht herausgefunden, wie. Der DYNAMIC PIVOT scheint am vielversprechendsten zu sein, aber ich weiß nicht wie. Bitte helfen Sie mir diese für mich komplexe Abfrage zu erstellen?
Ja, type_id's 1 bis 4 sind auch abhängig vom Host vorhanden. Es gibt auch mehr als diese beiden result_id's, aber das sollte nicht zu schwer zu erweitern sein. Sicherungen, die nicht ausgeführt werden konnten, sind in der Tat eine andere Frage und eine andere Abfrage. Fürs Erste bleibe ich bei der Summe der verschiedenen type_id's. Wenn die Summe weniger als die anderen Tage ist, ist etwas schief gelaufen. – mokum
Type_id's repräsentieren die Quellsoftware und den Sicherungstyp. Type_id = 1 entspricht zum Beispiel Acronis VMprotect, type_id = 2 entspricht Acronis VMprotect Dual Destination, type_id = 3 entspricht Symantec BackupExec, etc – mokum