Es gibt 3 Möglichkeiten:
1. Rekursive CTE
2. Hierachische Query Anweisung
3. Handgestrickte UDF
@1: RCTE
Code:
with x as (SELECT ROW_NUMBER() over(partition by Key ORDER BY rrn(a)) Seq,
a.*
FROM mytable a),
Rec (Key, Value, Seq)
as ( select Key, x.Value, seq from x where Seq = 1
union all
select x.Key, x.Value concat ' ' concat Rec.Value,
Rec.Seq + 1
from x join Rec on x.Key = Rec.Key and x.Seq = Rec.seq + 1),
y as (select Key, Max(Seq) Seq from Rec group by Key)
select rec.Key, Value
from rec join y Using (Key, Seq )
@2: Hierarchische Query Anweisung (PTF TR3 7.1)
Code:
With x as (Select Row_Number() over(Order By Key, rrn(a)) seq, a.*
from mytable a),
y as (Select Key, sys_connect_by_path(Trim(Value), ' ') Text
from x
Start With Key = 1 and seq = 1
connect by Prior Seq = Seq - 1)
Select Key, Max(Text) Text
From y
Group By Key;
@3: UTF
Habe ich gerade keine, aber der Key wird als Parameter übergeben und dann wird die Datei über Cursor für den Schlüssel-Wert verarbeitet und mit jedem Satz der aktuelle Wert zu dem Ausgabe-Feld hinzugefügt.
Birgitta
Bookmarks