Heim > Datenbank > MySQL-Tutorial > Wie kann ich in DB2 mithilfe von Dynamic SQL Zeilen in Spalten umwandeln?

Wie kann ich in DB2 mithilfe von Dynamic SQL Zeilen in Spalten umwandeln?

Patricia Arquette
Freigeben: 2024-12-31 19:35:10
Original
789 Leute haben es durchsucht

How to Pivot Rows into Columns in DB2 Using Dynamic SQL?

Zeilen in Spalten in DB2 mit dynamischem SQL umwandeln

Das Ziel besteht darin, Daten in einer Tabelle zu schwenken und Zeilen in Spalten umzuwandeln, um sie zu erhalten eine gewünschte Ausgabe. Betrachten Sie die folgende Tabellenstruktur:

Quelltabelle

ItemID Item Value
1 Meeting Now
1 Advise Yes
1 NoAdvise No
2 Meeting Never
2 Advise No
2 NoAdvise Null
2 Combine Yes

Gewünschte Ausgabe

ItemID Meeting Advise NoAdvise
1 Now Yes No
2 Never No Null

SQL Abfrage mit korrelierten Unterabfragen

Ein Ansatz, diese Transformation zu erreichen, ist die Verwendung korrelierter Unterabfragen Unterabfragen:

SELECT 
  A.ItemID,
  MAX(CASE WHEN A.Item = 'Meeting'  THEN Value END) AS Meeting,
  MAX(CASE WHEN A.Item = 'Advise'   THEN Value END) AS Advise,
  MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise
FROM A
GROUP BY A.ItemID
Nach dem Login kopieren

Diese Abfrage führt mehrere korrelierte Unterabfragen aus, eine für jede gewünschte Ausgabespalte, um den entsprechenden Wert für jede Zeile zu extrahieren. Die Ergebnisse werden dann nach der ItemID-Spalte gruppiert, um die Pivot-Ausgabe zu erhalten.

Alternativer Ansatz mit dynamischem SQL

Eine weitere Option besteht darin, dynamisches SQL zu nutzen, um eine Pivot-Tabelle zu erstellen . Dieser Ansatz ermöglicht mehr Flexibilität und kann angepasst werden, um die gewünschten Ausgabespalten zu generieren:

DECLARE @cols AS NVARCHAR(MAX), @sql AS NVARCHAR(MAX)

SET @cols = ''
SELECT @cols += ',MAX(CASE WHEN Item = ''' + Item + ''' THEN Value END) AS ' + Item
FROM (
  SELECT DISTINCT Item
  FROM A
) AS Items

SET @sql = 'SELECT ItemID, ' + SUBSTRING(@cols, 2) + '
            FROM A
            GROUP BY ItemID'

EXEC (@sql)
Nach dem Login kopieren

Diese Abfrage erstellt dynamisch die SQL-Anweisung basierend auf den unterschiedlichen Werten in der Artikelspalte und führt sie aus, wodurch die Pivot-Ausgabe generiert wird .

Das obige ist der detaillierte Inhalt vonWie kann ich in DB2 mithilfe von Dynamic SQL Zeilen in Spalten umwandeln?. 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