Hi @ll,

ich habe mir jetzt die Zähne ausgebissen und hoffe dass jemand von euch eine zündende Idee hat.
Im Internet habe ich keine Lösung gefunden, bzw. ich habe die unten realisierte Lösung gefunden, die aber auf dem System i scheinbar nicht läuft.

Die Anforderung ist eigentlich ganz einfach: ich möchte Namen aus mehreren Zeilen einer Tabelle in separaten Spalten in einer Zeile ausgegeben haben.

Code:
Tabelle1:
Nummer1
4711
4712
4713

Tabelle2:
Nummer2   | Name
4711      | Name1
4711      | Name2
4711      | Name3
4711      | Name4
4712      | Name1
4712      | Name2
4713      | Name1
4713      | Name2
4713      | Name3
Code:
Ergebnis:
 Nummer1   | Spalte1     | Spalte2      | Spalte3       | Spalte4
 4711      | Name1       | Name2        | Name3         | Name4
 4712      | Name1       | Name2        |               | 
 4713      | Name1       | Name2        | Name3         |
Ich dachte mir in einer Variablen die Nummer zu merken, um festzustellen ob die Nummer wechselt und in der anderen Variablen hochzuzählen der wievielte Satz innerhalb jeder Nummer gelesen wurde. Damit habe ich gleichzeitig die Spalte in der der Name eingestellt werden muss.

Code:
CREATE VARIABLE yrn dec
CREATE VARIABLE ystnr dec

select Nummer1 as xxstnr, p.Nummer2, p.Name, yrn, ystnr, RowNum  
       MAX(CASE WHEN p.RowNum=1 THEN p.Name END) as Spalte1,     
       MAX(CASE WHEN p.RowNum=2 THEN p.Name END) as Spalte2,     
       MAX(CASE WHEN p.RowNum=3 THEN p.Name END) as Spalte3,     
       MAX(CASE WHEN p.RowNum=4 THEN p.Name END) as Spalte4      
       from Tabelle1                                             
inner join ( select Nummer2, Name,                               
         set yrn   = case when Nummer2 <> ystnr then 0 end,      
         set ystnr = Nummer2,                                    
         set yrn   = yrn + 1 as RowNum                           
      from Tabelle2                                              
      group by Nummer2, Name                                     
      order by Nummer2, Name )  as p                             
on Nummer1 = p.Nummer2                                           
order by Nummer1
Natürlich freue ich mich auch über eine andere Lösung

Gruß
wti