Как разгруппировать сгруппированную запись на основе столбца count с помощью SQL

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть приведенный ниже набор данных, полученный после группировки по подразделениям и loc.

идентификатор отдела loc count

100 a 2

300 c 1

Мне нужно вывести, как показано ниже

deptid loc

100 a

100 a

300 c

пожалуйста, помогите

Комментарии:

1. К тому времени не используйте group . Или поделитесь своим запросом.

Ответ №1:

Другой вариант — использовать Recursive Queries для получения желаемого результата.

 with cte(deptid, loc, cnt) as 
(select deptid, loc, cnt - 1 from dept
union all
select cte.deptid, cte.loc, cte.cnt - 1
from cte, dept
where dept.deptid = cte.deptid and dept.loc = cte.loc
and cte.cnt > 0)
select deptid, loc from cte order by deptid, loc;
 

Ссылка на скрипку DB: https: //dbfiddle.uk/?rdbms=oracle_18amp;fiddle=0580680ecf0b47b4933e3a4731b62b4a

Ответ №2:

Вам необходимо сгенерировать строки (rws встроенного просмотра) в соответствии с максимальным значением для столбца count, а затем присоединить их к вашей базовой таблице, как показано ниже :

 select t.DEPT_ID, t.LOC
from your_table t
join (
    select level lvl from dual
    connect by level <= (select max(count) from your_table )
 )rws
     on rws.lvl <= t.count
order by 1, 2
;