Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine PIVOT-Abfrage für eindeutige Datensätze durchführen und dabei Zuordnungen beibehalten und Nullwerte verarbeiten?

Wie kann ich eine PIVOT-Abfrage für eindeutige Datensätze durchführen und dabei Zuordnungen beibehalten und Nullwerte verarbeiten?

Barbara Streisand
Freigeben: 2024-12-24 06:49:14
Original
434 Leute haben es durchsucht

How Can I Perform a PIVOT Query on Distinct Records While Preserving Associations and Handling Zero Values?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage