Concatenate Multiple Row Values in 1 Row, mit SQL for iSeries

Zunächst muss ich mich bei Kent Milligan und seinem Artikel unter @ bedankhttp: //www.mcpressonline.com/sql/techtip-combining-multiple-row-values-into-a-single-row-with-sql-in-db2-for-i.htm dafür, dass du mich in diesem Problem so weit gebracht hast wie ich. Aber jetzt muss ich weiter darauf eingehen, was er hier getan hat.

Um zu vermeiden, dass Sie zu seinem Artikel gehen müssen, bestand das Problem, das er ansprach, darin, Zeichenfolgendaten aus mehreren Zeilen in einer einzelnen Zeile in der resultierenden Tabelle zu verketten. Beispielsweise

Table Cars:

Make ModelFord FusionChevy TahoeHonda OdysseyFord TaurusFord FocuChevy Malibu

Ergebnisse

Make ModelChevy Malibu, TahoeFord Focus, Stier, FusionHonda Odyssey

Dies wurde mit der SQL-Anweisung durchgeführt:

WITH numbered_sets(make, model, curr, prev) AS (
   SELECT make, model,
       ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) AS curr,
       ROW_NUMBER() OVER (PARTITION BY make ORDER BY model) -1 AS prev
   FROM inventory)
SELECT make,
       MAX (TRIM(L ',' FROM
             CAST(SYS_CONNECT_BY_PATH(model, ',') AS VARCHAR(256)) ))
FROM numbered_sets
START WITH curr = 1
CONNECT BY make = PRIOR make AND prev = PRIOR curr
GROUP BY make

Ich konnte das an meinen eigenen Tisch anpassen und den größten Teil des Weges dahin schaffen, wo ich hin wollte. Für meine Zwecke muss ich jedoch eine zusätzliche Spalte für die Gruppierung hinzufügen. Beispielsweise

Table Cars:

Make Type ModelFord Sedan Fusion Chevy SUV Tahoe Honda Minivan OdysseyFord Sedan TaurusFord Sedan FocusChevy Sedan MalibuFord SUV EscapeFord SUV ExplorerChevy Sedan Impala

Für die Ergebnisse würde ich Folgendes suchen:

Make Type Model Chevy Sedan Malibu, Impala Chevy SUV TahoeFord Sedan Fusion, Stier, FocusFord SUV Escape, Explorer Honda Minivan Odyssey

Hat jemand irgendwelche Gedanken darüber, was ich alles zur ursprünglichen Anweisung hinzufügen muss, um die TYPE-Spalte und die entsprechende GROUP hinzufügen zu können? Ich habe eine Handvoll Dinge ausprobiert, aber ich vermute, ich muss etwas mit der CONNECT_BY_PATH-Anweisung tun. Ich bin mir nur nicht sicher, was.

Vielen Dan

Antworten auf die Frage(2)

Ihre Antwort auf die Frage