【发布时间】:2016-04-19 19:55:42
【问题描述】:
只有当所有剩余的列都匹配时,Program_Type 才应该以逗号分隔合并。
我尝试使用 listagg 但我无法实现它。我也尝试使用 connect by 但仍然无法检查所有条件。
任何帮助。
问候。
【问题讨论】:
只有当所有剩余的列都匹配时,Program_Type 才应该以逗号分隔合并。
我尝试使用 listagg 但我无法实现它。我也尝试使用 connect by 但仍然无法检查所有条件。
任何帮助。
问候。
【问题讨论】:
像这样的
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 - 截图
【讨论】:
如果您只有一两个需要简化的大表,那么您可以通过几个步骤轻松完成此操作
当然,如果您需要重复执行此操作,那么这是一个繁琐的解决方案,您可能应该使用宏或数据库程序。
【讨论】: