我需要创建以下字符串;
'A-NUPHAT','AMIRA','AMNAD','ANAT','ANUCHAT',
但没有最后一个逗号:
这是我的疑问:
select listagg( '''' || empName||'''' || ',' ) within group (order by empName)
from ( select distinct T4.Rep_Emp_Name as empName
from YAN_TASKS t0
inner join YAN_PLATES t1
on t0.firm_code = T1.Firm_Code
and T0.Plate_Code= T1.Plate_Code
inner join Rep_Emp_Names t2
on T1.Firm_Code = T2.Firm_Code
and T1.Rep_Emp_Code=t2.REP_EMP_CODE
inner join YAN_EMP_TASKS_PLAN t3
on t0.firm_code=t3.firm_code
and T0.Task_Doc_Nbr = T3.Task_Doc_Nbr
inner join Rep_Emp_Names t4
on t4.firm_code = t3.firm_code
and t4.Rep_Emp_Code=t3.Rep_Emp_Code) )
如何在不获取最后一个逗号的情况下重写查询?
答案 0 :(得分:2)
我认为问题在于您将逗号连接到您的值字符串。您应该将逗号指定为分隔符参数:listagg()
足够聪明,知道我们不需要尾随逗号:
listagg(''''||empName||'''' , ',')
^ ^
aggregation arg delimiter arg
默认分隔符是null
,所以如果我们不指定参数,那么Oracle只需运行一个完整的分配器:)。