Несколько строк в одну Teradata - PullRequest
0 голосов
/ 05 февраля 2020

Моя изменчивая таблица в Teradata содержит данные, подобные следующим.

  ID |  RECORD_TIMESTAMP |  CHANNEL
1    |    20200101       |  A
1    |    20200102       |  B
1    |    20200103       |  C
2    |    20200104       |  D
3    |    20200105       |  E 

Мой требуемый вывод - объединить данные на основе идентификатора и разделить с помощью конвейера. Идентификатор может иметь или не иметь несколько экземпляров (несколько экземпляров go до 50 на идентификатор)

Требуемый вывод :

1|20200101|A|1|20200102|B|1|20200103|C
2|20200104|D
3|20200105|E

Как этого достичь? Я попытался самостоятельно объединиться, создавая дубликаты, попробовал XMLAGG, но не смог воспроизвести нужный мне формат.

1 Ответ

0 голосов
/ 05 февраля 2020

Как насчет этого:

SELECT ID, 
  TRIM(TRAILING '|' FROM (
    XMLAGG(
      ID || '|' || RECORD_TIMESTAMP || '|' || CHANNEL || '|' -- value to group
      ORDER BY ID, RECORD_TIMESTAMP, CHANNEL -- group ordering
    ) 
    (VARCHAR(1000))
    )
  ) AS MyRecordGroups
FROM MyTable
GROUP BY ID
;
...