
怎样将图中的结果显示成这样
220000010000277 负债类 104150002 资产类
做一行显示
------解决方案--------------------
固定的话用:
with t as
(select 220000010000277 as facctcode, '负债类' as facctclass
from dual
union all
select 104150002 as facctcode, '资产类' as facctclass from dual
)
select max(decode(facctcode, 220000010000277, facctcode, null)) as col1,
max(decode(facctcode, 220000010000277, facctclass, null)) as col2,
max(decode(facctcode, 104150002, facctcode, null)) as col3,
max(decode(facctcode, 104150002, facctclass, null)) as col4
from t;
动态的话,推荐外部程序实现。
------解决方案--------------------
不用这么麻烦
WITH T AS
(SELECT 220000010000277 AS FACCTCODE, '负债类' AS FACCTCLASS
FROM DUAL
UNION ALL
SELECT 104150002 AS FACCTCODE, '资产类' AS FACCTCLASS FROM DUAL)
SELECT LISTAGG(T.FACCTCODE
------解决方案--------------------
' '
------解决方案--------------------
FACCTCLASS, ' ') WITHIN GROUP(ORDER BY FACCTCODE)
FROM T;
------解决方案--------------------
似乎楼主不是你这个意思哦
------解决方案--------------------
with t as
(select 220000010000277 as facctcode, 'fuzai' as facctclass
from dual
union all
select 104150002 as facctcode, 'zichan' as facctclass from dual
UNION ALL
select 13212121 as facctcode, 'zichan' as facctclass from dual
)
SELECT replace(ltrim(max(SYS_CONNECT_BY_PATH(t1.facctcode
------解决方案--------------------
' '
------解决方案--------------------
t1.facctclass, ',')), ','),',',' ') col
FROM(SELECT t.*,ROWNUM rn FROM t) t1
START WITH t1.rn=1
CONNECT BY PRIOR t1.rn=t1.rn-1;