当前位置: 代码迷 >> Oracle开发 >> 列拼接成行的有关问题
  详细解决方案

列拼接成行的有关问题

热度:32   发布时间:2016-04-24 06:49:50.0
列拼接成行的问题
以下表数据:
 name  column    postion
table1  a   2
table1  b   3
table1  c   1
table2  a   2
table2  b   1

要实现根据postion升序将column拼接成以下格式,请问如何实现?
table1 c,a,b
table2 b,a

------解决方案--------------------
引用:
以下表数据:
 name  column    postion
table1  a   2
table1  b   3
table1  c   1
table2  a   2
table2  b   1

要实现根据postion升序将column拼接成以下格式,请问如何实现?
table1 c,a,b
table2 b,a



WITH T AS
 (SELECT 'table1' NAME, 'a' COL, 2 PORTION
    FROM DUAL
  UNION ALL
  SELECT 'table1' NAME, 'b' COL, 3 PORTION
    FROM DUAL
  UNION ALL
  SELECT 'table1' NAME, 'c' COL, 1 PORTION
    FROM DUAL
  UNION ALL
  SELECT 'table2' NAME, 'a' COL, 2 PORTION
    FROM DUAL
  UNION ALL
  SELECT 'table2' NAME, 'b' COL, 1 PORTION
    FROM DUAL)
SELECT T2.NAME, LTRIM(MAX(SYS_CONNECT_BY_PATH(T2.COL, ',')), ',') COL
  FROM (SELECT T.*,
               ROW_NUMBER() OVER(PARTITION BY T.NAME ORDER BY T.PORTION) AS RN
          FROM T) T2
 START WITH RN = 1CONNECT BY PRIOR RN = RN - 1
        AND PRIOR T2.NAME = T2.NAME
 GROUP BY T2.NAME;

  相关解决方案