Sagen, ich habe die unten stehende DatenmengeWie verketteten Spalten in SQL zu manipulieren
WITH dataset (hno,sorder,level,dummy,maxorder) AS
(
SELECT 1, 1, 'val1', 'NULL1', 5 FROM dual UNION ALL
SELECT 1, 2, 'val2', 'NULL2', 5 FROM dual UNION ALL
SELECT 1, 3, 'val3', 'NULL3', 5 FROM dual UNION ALL
SELECT 1, 4, 'val4', 'NULL4', 5 FROM dual UNION ALL
SELECT 1, 5, 'val5', 'NULL5', 5 FROM dual)
SELECT *
FROM dataset;
HNO SORDER LEVEL DUMMY MAXORDER
1 4 val4 NULL4 5
1 2 val2 NULL2 5
1 3 val3 NULL3 5
1 1 val1 NULL1 5
1 5 val5 NULL5 5
Und ich brauche eine andere Spalte haben genannt TEXT
HNO SORDER LEVEL DUMMY MAXORDER TEXT
1 4 val4 NULL4 5 val1,val2,val3,val4,NULL5
1 2 val2 NULL2 5 val1,val2,NULL3,NULL4,NULL5
1 3 val3 NULL3 5 val1,val2,val3,NULL4,NULL5
1 1 val1 NULL1 5 val1,NULL2,NULL3,NULL4,NULL5
1 5 val5 NULL5 5 val1,val2,val3,val4,val5
Die Idee für die dynamischen SQL-Platzhalter zu manipulieren ist. Also, wenn die Sortierreihenfolge ist ein Bereich zwischen 1 ... n dann für einen SORDER
Wert x, muss ich Werte aus der Spalte LEVEL
für 1 bis x und dann von Dummy für x + 1 bis n und alle von ihnen als Komma verkettet getrennte Werte und vor allem alle in einem SQL. Diese maximale Reihenfolge kann eine beliebige Zahl sein und ist nicht festgelegt. WX2 hat keinen rekursiven CTE, was es schwierig macht.
Irgendwelche Zeiger?
Ich würde Ihnen vorschlagen, eine skalare Funktion zu erstellen, die den verketteten Wert auf der Basis der sorder produzieren als Eingabeparameter. Ansonsten kann ich keine Möglichkeit finden, diese Logik mit einem Datensatz zu machen. –
Müssen Sie eine TEXT-Spalte für nur eine Zeile (SORDER = X) zurückgeben, oder müssen Sie sie für alle Zeilen generieren? –
müssen für alle Zeilen generiert werden – SriniV