2016-04-19 3 views
0

Я хочу объединить несколько строк в один на основе нескольких проверок столбцов. enter image description hereОбъединить вывод строк для проверки нескольких столбцов

Только если все остальные столбцы совпадают, тогда Program_Type должен быть объединен как разделенный запятой.

Я пробовал использовать listagg, но я не могу его достичь. Я также попытался использовать соединение, но все еще не смог проверить все условия.

Любая помощь на том же.

С уважением.

ответ

1

Что-то вроде этого

select 
listagg(PROGRAM_TYPE,',') 
within group (order by PROGRAM_TYPE DESC) as PROG_GROUP 
from emp 

Выход:

XYZ,MNO 

Далее, если вы хотите, чтобы все столбцы в одном запросе

With PROGRAM1_TYPE 
as (
select distinct id,prog_type 
from 
(
select id,listagg(PROGRAM_TYPE,',') within group (order by PROGRAM_TYPE DESC) 
over (partition by id) prog_type 
from emp 
) 
)select distinct e.id,e.name,prog_type PROGRAM_TYPE, 
e.MNAME,e.type --add remaining columns here 
from PROGRAM1_TYPE p,emp e 
where p.id=e.id 

O/р -Screenshot

enter image description here

+0

Благодарим за помощь – user2854333

0

Если только один или два больших таблиц, которые нужно упростить, то вы можете легко сделать это в несколько шагов

  1. Сортировать по любому из столбцов, которые должны быть одинаковыми (например, ID) ,
  2. В дополнительной колонке напишите функцию, чтобы определить, какие строки такие же, как те, которые ниже, а какие нет - что-то вдоль строк для строки 3 - IF (AND (A3 = A4, B3 = B4), "тот же ","последний").
  3. В другом столбце добавьте уравнение для объединения типов программ, если строки одинаковы, например. = IF (F3 = «последний», C4, G3 & »,« & C4)
  4. После того, как значения на месте сделают копию и «вставьте результаты» в два столбца (так что у вас есть значения, а не уравнения)
  5. Сортировать по той же/последнем столбце, сохраняя при этом «последние» строк и отбрасывать «же»

, конечно, если вам нужно сделать это несколько раз, то это неуклюжее решение, и вы, вероятно, следует использовать макроса или базы данных.

+0

Hi. Я искал, чтобы сделать это, используя pl/sql – user2854333

Смежные вопросы