如何在Oracle SQL 输出的最后一行以外的所有行都加上逗号(,)?
我正在处理的示例查询
SELECT DISTINCT CHR(39) || ltrim(MATNR,0) || CHR(39) AS GLOBE_MATERIAL_ID_LIST
FROM PR1_SOAINFRA.WLI_NESOA2_REPORTING_ARCHIVE,
XMLTABLE( '/_-GLB_-OGTX_DESADV01_CUST_ASN/IDOC/E1EDK08/E1EDP07/E1EDP09'
PASSING XMLTYPE(data_value,871)
COLUMNS
MATNR varchar2(2000) path 'MATNR'
)
WHERE ERRORCODE IS NOT NULL AND BUSINESSID = '0000000382153210-E9APRR3103';
输出:
'12352682'
'12351436'
'12351434'
'12350683'
期望的输出(最后一行末尾没有逗号):
'12352682',
'12351436',
'12351434',
'12350683'
最佳答案
将我的评论作为单独的答案发布,子查询将对数字进行排序,外部查询将根据 rownum 附加逗号并按 desc 顺序返回结果
select GLOBE_MATERIAL_ID_LIST || case when rownum > 1 then ',' else '' end as GLOBE_MATERIAL_ID_LIST
from (
SELECT DISTINCT CHR(39) || ltrim(MATNR,0) || CHR(39) AS GLOBE_MATERIAL_ID_LIST
FROM PR1_SOAINFRA.WLI_NESOA2_REPORTING_ARCHIVE,
XMLTABLE( '/_-GLB_-OGTX_DESADV01_CUST_ASN/IDOC/E1EDK08/E1EDP07/E1EDP09'
PASSING XMLTYPE(data_value,871)
COLUMNS
MATNR varchar2(2000) path 'MATNR'
)
WHERE ERRORCODE IS NOT NULL AND BUSINESSID = '0000000382153210-E9APRR3103'
order by GLOBE_MATERIAL_ID_LIST
) e order by GLOBE_MATERIAL_ID_LIST DESC
SQL fiddle
Oracle 11g R2 架构设置:
create table nums(
id number(10)
);
insert into nums values ('12352682');
insert into nums values ('12351436');
insert into nums values ('12351434');
insert into nums values ('12350683');
查询:
select
num || case when rownum > 1 then ',' else '' end as num
from (
select chr(39) || id || chr(39) as num
from nums
order by num
) e order by num desc
Results :
| NUM |
|-------------|
| '12352682', |
| '12351436', |
| '12351434', |
| '12350683' |
关于sql - 如何通过不添加到最后一行来将字符添加到输出行的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054352/