Я на Redshift и пытаюсь решить следующую проблему с помощью Redshift SQL.У меня есть таблица со следующей структурой:
Record 1
ColA: 1
ColB: 2
ColC: 3
AggColA: A1B1
AggColB: 1
Record 2
ColA: 1
ColB: 2
ColC: 3
AggColA: A1B2
AggColB: 1
Record 3
ColA: 1
ColB: 2
ColC: 3
AggColA: A1B3
AggColB: 2
Record 4
ColA: 1
ColB: 2
ColC: 3
AggColA: A1B4
AggColB: 3
Я хочу достичь конца со следующими результатами:
Record 1
ColA: 1
ColB: 2
ColC: 3
AggColBA: 1*A1B1*1*A1B2*
Record 2
ColA: 1
ColB: 2
ColC: 3
AggColBA: 2*A1B3*3*A1B4*
Правила таковы: а) Может быть любойколичество вхождений AggColA
& AggColB
для одной и той же комбинации ColA
, ColB
, ColC
b) Нам нужно сгруппироваться по ColA
, ColB
и ColC
и объединить AggColA
и AggColB
в новый столбец AggColAB
, который будет иметь следующий формат:
AggColB*AggCola*AggColB*AggCola*AggColB*AggCola ..........
c) Если имеется более 2 вхождений AggColA
& AggColB
для одного и того же значения ColA
, ColB
и ColC
, затем нам нужно записать из 3-го вхождения в новую запись в том же формате, как описано выше.Это должно быть сделано для каждого 3-го вхождения AggColA
& AggColB
. На данный момент я могу выполнить правило #a и #b, используя запрос, такой как:
Я могу выполнить правило #a и правило # b следующим образом:
select ColA, ColB, ColC,
listagg(AggColB||'*'||AggColA,'*')
within group (order by AggColA) as AggColBA
from stage.raw_data_from_mf
group by ColA, ColB, ColC
Вывод запроса следующий:
ColA: 1
ColB: 2
ColC: 3
AggColBA: 1*A1B1*1*A1B2*2*A1B3
Однако я не могу понятькак выполнить Правило # c с помощью Redshift SQL и разбить 3-е вхождение на отдельную запись.
Пожалуйста, помогите!Заранее спасибо.