Объединяем некоторые строки и суммируем их в oracle sql - PullRequest
0 голосов
/ 29 апреля 2020

Я работаю над некоторыми манипуляциями с данными и у меня есть таблица:

Source Table

Customer  Account   AMT   Charge_1  Charge_2 Charge_3
AB           E      C      a            g      m
AB           E      C      b            h      n
AB           E      C      c            i      o
AB           B      W      d            j      p
AB           B      W      e            k      q
AB           R      V      f            l      r

Мне нужно иметь и вывод, чтобы выглядеть так:

Customer  Account   AMT   Charge_1  Charge_2  Charge_3
AB           E       C     a+b+c     g+h+i     m+n+o
AB           B       W       d+e       j+k       p+q
AB           R       V         f         l         r

enter image description here

Пожалуйста, предложите, что я могу использовать, чтобы объединить и суммировать их. Я ценю любой вклад!

Спасибо

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете использовать агрегацию. Значения являются строками, поэтому вы, вероятно, хотите объединить их, а не суммировать (что не имеет смысла в строковом контексте):

select
    customer,
    account
    listagg(charge_1, '+') charge_1,
    listagg(charge_2, '+') charge_2,
    listagg(charge_3, '+') charge_3
from mytable
group by customer, account

Вы можете управлять порядком результатов в сцепленных строках с помощью within group пункт:

select
    customer,
    account
    listagg(charge_1, '+') within group(order by charge_1) charge_1,
    listagg(charge_2, '+') within group(order by charge_2) charge_2,
    listagg(charge_3, '+') within group(order by charge_3) charge_3
from mytable
group by customer, account
...