Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbinden mehrerer Zeilen zu einer einzigen Zeile ohne Aggregation [Oracle]

Wenn Sie wissen, dass Sie drei Spalten haben, zählen Sie sie auf und aggregieren:

select max(case when seqnum = 1 then type end) as type1,
       max(case when seqnum = 1 then date end) as date1,
       max(case when seqnum = 1 then amount end) as amount1,
       max(case when seqnum = 2 then type end) as type2,
       max(case when seqnum = 2 then date end) as date2,
       max(case when seqnum = 2 then amount end) as amount2,
       max(case when seqnum = 3 then type end) as type3,
       max(case when seqnum = 3 then date end) as date3,
       max(case when seqnum = 3 then amount end) as amount3       
from (select t.*, rownum as seqnum
      from t
     ) t;

Wenn Sie die Anzahl der zurückgegebenen Spalten nicht kennen, müssen Sie dynamisches SQL verwenden (execute immediate ).