PIVOT-Abfrage zu eindeutigen Datensätzen mit beibehaltener Zuordnung
Stellen Sie sich das Szenario vor, in dem wir eine Tabelle mit Daten haben, die Aktivitäten und Prozentsätze für Einzelpersonen enthalten. Eine Standard-PIVOT-Abfrage mit der MAX-Funktion übersieht möglicherweise Aktivitäten mit null Prozentwerten. Um dieses Problem anzugehen, führen wir eine Lösung ein, die die Beziehung zwischen Aktivitäten und Prozentsätzen beibehält.
Um dies zu erreichen, integrieren wir eine ROW_NUMBER()-Funktion in den allgemeinen Tabellenausdruck (CTE), um die Aktivitäten innerhalb jeder einzelnen Funktion sequentiell zu ordnen Namensgruppe. Mit dieser Technik kann die PIVOT-Abfrage die Zuordnung zwischen Aktivitäten und Prozentsätzen über mehrere Zeilen hinweg beibehalten.
Hier ist ein Beispiel der überarbeiteten Abfrage:
;with cte as ( select *, ROW_NUMBER() over (partition by name order by percentage desc) ROWNUM from A ), cte2 as ( SELECT Id,Code,ROWNUM,James,James_,Sam,Sam_,Lisa,Lisa_ FROM cte PIVOT(MAX(activity) FOR name IN (James,Sam,Lisa)) AS PVTTable PIVOT ( MAX(percentage) FOR name1 IN (James_,Sam_,Lisa_)) AS PVTTable1 ) select Id, Code, MAX(James) James, MAX(James_) James_, MAX(Sam) Sam, MAX(Sam_) Sam_, MAX(Lisa) Lisa, MAX(Lisa_) Lisa_ from cte2 group by Id, Code, ROWNUM
Der CTE, cte, fügt eine ROWNUM hinzu Spalte zur Ausgangstabelle hinzufügen und die Aktivitäten für jeden Namen in absteigender Prozentreihenfolge ordnen. Diese Reihenfolge ermöglicht es der nachfolgenden PIVOT-Abfrage, die Daten korrekt zu gruppieren und zu aggregieren.
Die Ausgabe der Abfrage ähnelt dem erwarteten Ergebnis, bei dem unterschiedliche Aktivitäten mit ihren jeweiligen Namen und Prozentsätzen verknüpft sind:
Id Code James James_ Sam Sam_ Lisa Lisa_ 1 Prashant Running 43.43 Cooking 1 73 Walking 90.34 1 Prashant Stealing 0.00 Cooking 3.43 NULL NULL 1 Prashant Lacking 0.00 NULL NULL NULL NULL
Mit dieser Technik können wir vollständige und genaue PIVOT-Ergebnisse erhalten und gleichzeitig den Zusammenhang zwischen Aktivitäten und Prozentsätzen beibehalten, selbst für Datensätze mit Null-Prozentwerten.
Das obige ist der detaillierte Inhalt vonWie kann ich eine PIVOT-Abfrage für eindeutige Datensätze durchführen und dabei Zuordnungen beibehalten und Nullwerte verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!