如何在一个逗号分隔的值中获取列值

时间:2019-10-17 02:47:51

标签: asp.net oracle

我有一个表,其中包含以下行

ASETTYPEID  ASETTYPE
1           SYSTEM
2           PRINTER
3           PROJECTOR
4           SCANNER
5           AUDIO VISUAL AIDS
6           TAB
7           LAPTOPS
8           ALL IN ONE PC
9           OTHERS

我需要选择查询并在新表中插入逗号分隔的值,其结果如下格式

ASETTYPEID  ASETTYPE
1,2,3,4,5,7,8,9 SYSTEM,PRINTER,PROJECTOR,SCANNER,AUDIO VISUAL 
            AIDS,TAB,LAPTOPS,ALL IN ONE PC,OTHERS
1,3,5,8        SYSTEM,PRINTER,PROJECTOR

1 个答案:

答案 0 :(得分:0)

使用listagg:

with tbl as
(SELECT 1 ASETTYPEID,   'SYSTEM' ASETTYPE from dual
UNION ALL 
select 2, 'PRINTER' from dual 
union all 
select 3, 'PROJECTOR' from dual
union all
select 4, 'SCANNER' from dual
union all
select 5, 'AUDIO VISUAL AIDS' from dual
union all
select 6, 'TAB' from dual
union all
select 7, 'LAPTOPS' from dual
union all
select 8, 'ALL IN ONE PC' from dual
union all
select 9, 'OTHERS' from dual)
SELECT listagg(ASETTYPEID, ', ') 
    WITHIN GROUP(order by ASETTYPEID) as ASETTYPEID_list,
    listagg(ASETTYPE, ', ') 
    WITHIN GROUP(order by ASETTYPEID) as ASETTYPE_list
FROM tbl
where  ASETTYPEID in (1,2,3,4,5)

输出:

1, 2, 3, 4, 5   SYSTEM, PRINTER, PROJECTOR, SCANNER, AUDIO VISUAL AIDS