Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多行的值合并到一列中_Sql_Teradata - Fatal编程技术网

Sql 将多行的值合并到一列中

Sql 将多行的值合并到一列中,sql,teradata,Sql,Teradata,来源数据: 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 KJHSDK

来源数据:

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
我希望我能更好地理解答案的格式;我所有的“漂亮”间隔都消失了。希望这是清楚的。

这里有一个示例


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

谢谢您让我知道!我的IE 8副本(由我们尊敬的IT部门定制)有严重的问题;我刚刚用Chrome再次查看了这个,我看到它的格式正确。我想我会更频繁地使用Chrome!不客气!我只在必要时使用IE,这通常仅限于Outlook Web Access.:)