Объединение нескольких строк в одну строку без агрегации [Oracle] - PullRequest
0 голосов
/ 21 января 2020

У меня есть следующий запрос:

select type,
       date,
       amount
  from table;

И он дает следующий результат:

TYPE    DATE        AMOUNT
--------------------------------
A       30.6.2019   15
B       30.11.2019  20
C       22.12.2019  17

Я хочу написать запрос, который будет возвращать следующее:

TYPE1     DATE1      AMOUNT1     TYPE2    DATE2      AMOUNT2     TYPE3     DATE3      AMOUNT3
------------------------------------------------------------------------------------------------------
A         30.6.2019  15          B        30.11.2019 20          C         22.12.2019 17

Количество строк в первом запросе всегда будет равно 3 и не больше этого. Я не могу объединить, потому что мне нужно несколько столбцов в конечном наборе результатов. Можно ли это сделать в Oracle SQL без использования PL / SQL?

1 Ответ

0 голосов
/ 21 января 2020

Если вы знаете, что у вас есть три столбца, перечислите их и агрегируйте:

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;

Если вы не знаете количество возвращаемых столбцов, вам нужно использовать Dynami c SQL (execute immediate).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...