仅当所有剩余列都匹配时,Program_Type才会以逗号分隔的方式合并。
我尝试使用listagg,但我无法实现它。我也尝试使用connect by但仍然无法检查所有条件。
对此有任何帮助。
问候。
答案 0 :(得分: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 / p -Screenshot
答案 1 :(得分:0)
如果您只需要一个或两个需要简化的大表,那么您可以通过几个步骤轻松完成此操作
当然,如果您需要反复执行此操作,那么这是一个麻烦的解决方案,您可能应该使用宏或数据库程序。