Как объединить строки в красное смещение - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть таблица в красном смещении со столбцом с общим идентификатором и рядом других столбцов атрибутов. Однако общий идентификатор появляется в нескольких строках, по одной строке для каждого атрибута. Я хотел бы объединить их.

т.е.

Common ID | Attribute 1 | Attribute 2
123          X             null
123          null          Y
987          null          A
987          B             null

Хотел бы превратить это в

Common ID | Attribute 1 | Attribute 2
123         X             Y
987         B             A

По сути, это началось с того, что я поворачивал таблицу (используя операторы case), но конечный результат должен объединяться или группироваться по общему идентификатору (но агрегации нет).

Обратите внимание, что в конечном продукте есть ~ 20 или около того атрибутов, поэтому решение, которое не зависит от количества атрибутов, является идеальным. Это также означает, что общий идентификатор может появляться примерно до 20 раз.

Я изучил listagg, но хочу, чтобы в конечном выводе было одинаковое количество столбцов, а не один агрегированный / объединенный столбец.

1 Ответ

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

Использование агрегации:

select common_id, max(attribute_1) as attribute_1, max(attribute_2) as attribute_2
from t
group by common_id;

Возможно, это можно исправить в запросе, который генерирует данные, исправив ключи group by.

...