SQL Verketten mehrerer Zeilen
Ich bin mit Teradata, ich habe eine Tabelle wie diese
ID String
123 Jim
123 John
123 Jane
321 Jill
321 Janine
321 Johan
Ich möchte zur Abfrage der Tabelle, so bekomme ich
ID String
123 Jim, John, Jane
321 Jill, Janine, Johan
Ich habe versucht, partition, aber es kann viele Namen.
Wie bekomme ich dieses Ergebnis. Auch, um mich in die richtige Richtung wäre toll.
InformationsquelleAutor user2888246 | 2013-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider gibt es keine PIVOT in Teradata (nur ein TD_UNPIVOT in 14.10).
Wenn du hast Glück, es gibt eine Aggregat-UDF, um Ihre Website zu tun, eine Gruppe concat (vermutlich geringe-Möglichkeit).
Ansonsten gibt es zwei Optionen: Rekursion oder aggregation.
Wenn die maximale Anzahl von Zeilen pro id ist bekannt aggregation ist normalerweise schneller. Es ist eine Menge code, aber das meiste basiert auf cut&paste.
Für große Tabellen, es ist viel effizienter, wenn Sie materialisieren das Ergebnis der Abgeleiteten Tabelle in einem Flüchtigen Tabelle zunächst mit Hilfe der GROUP BY-Spalte als PI.
Zur Rekursion, die Sie verwenden sollten eine Flüchtige Tabelle, auch als OLAP-Funktionen dürfen nicht in den rekursiven Teil. Mit einem Blick, anstatt sich immer wieder berechnen die OLAP-Funktion und somit zu einer schlechten Leistung.
Es gibt ein problem bei diesem Ansatz ist, müssen Sie möglicherweise eine viel spool-die ist leicht zu sehen, wenn man nicht
WHERE rn = 1
.Dieses half mir ungemein, danke.
InformationsquelleAutor dnoeth
InformationsquelleAutor coder1167