sql - 如何通过不添加到最后一行来将字符添加到输出行的末尾?

标签 sql oracle

如何在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/

相关文章:

sql - 独特的航类组合与总乘客

mysql - 将 autoincrement id 字段加一

oracle - 如何在同一台机器上安装 oracle imp 11gr2 和 12cr2 并只选择我想要使用的那个

sql - 如何有效地找出哪条记录已被删除?

css - 更改 APEX 5 经典报告中的排序图标

MySql 查询返回我不想要的结果

当用户和设备存储在同一个表中并且关联存储在另一个表中时,SQL/SQLite 检索属于用户的设备列表

c# - ASP.NET MVC注册警报SQL func用户存在

oracle - 在 Oracle Designer 中向 View 添加列

oracle - (又一个) "Missing Right Parenthesis"