将2行合并为1行 - Sybase

时间:2016-06-30 09:46:46

标签: sql sybase sybase-ase

我有一个结果集,如下所示,

id fname  lname
11 Tom   Jerry
11 Tom   Harry

有没有办法可以将两行合并为1行,lname值与逗号分隔合并。如下所示,

11 Tom   Jerry,Harry

干杯!!

2 个答案:

答案 0 :(得分:1)

您可以使用Stuff和一些XML工作来完成此操作。编辑:未在sybase上测试,但请试一试

测试数据

CREATE TABLE #TestData (id int, fname varchar(20), lname varchar(20))
INSERT INTO #TestData 
VALUES
 (11,'Tom','Jerry')
,(11,'Tom','Harry')

查询

SELECT 
a.id
,a.fname
,STUFF((SELECT ',' + b.lname
        FROM #TestData b 
        WHERE b.id = a.id 
        FOR XML PATH('')), 1, 1, '') lname
FROM #TestData a
GROUP BY a.id, a.fname

结果

id  fname   lname
11  Tom     Jerry,Harry

答案 1 :(得分:0)

步骤:(伪代码)

1 - 按id,fname

按顺序获取基表数据

2 - 处理游标中的每一行并使用逻辑以下直到id,fname值一旦gtes改变就相同,控制应该循环以插入以逗号分隔的lastname附加的新值集(id,fname)

BEGIN
  SET @List = @List + ',' + Cast(@lname As varchar(10)) 
END