繁体   English   中英

将多行的concat值合并为一列

[英]concat value of multiple rows into one column

来源数据:

COLA    COLB   COLC
1       BO     AFV
1       BO     AKG
1       BO     UYD
2       BOS    KJHSDKJ
2       BOS    YWI
3       POS    JHSFJH
3       POS    IUXN

我想要的结果如下:

COLA    COLB    COLC
1       BO      AFV, AKG,UYD
2       BOS     KJHSDKJ,YWI
3       POS     JHSFJH,IUXN

COLA,COLB是关键专栏。

这是一个递归查询,它将完成这项工作:

WITH RECURSIVE REC_VIEW (COLA, COLB, ROLL_UP, COLC) 
AS
(
SELECT COLA
     , COLB
     , MIN(COLC) (VARCHAR(1000))
     , MIN(COLC)
FROM  your_table
GROUP BY 1,2
UNION ALL
SELECT B.COLA
     , B.COLB
     , B.ROLL_UP || ',' || A.COLC
     , A.COLC
FROM   your_table A 
INNER JOIN REC_VIEW B
ON    A.COLA = B.COLA
  AND A.COLB = B.COLB
  AND A.COLC > B.COLC
)

SELECT COLA, COLB, ROLL_UP as COLC
FROM REC_VIEW

QUALIFY ROW_NUMBER() OVER (PARTITION BY COLA, COLB
                           ORDER BY CHARACTER_LENGTH(ROLL_UP) DESC) = 1

我希望我明白如何更好地格式化答案; 我所有的“漂亮”间距都消失了。 希望这很清楚。

这是一个示例链接

它有一些示例数据和实际查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM