我有一个结果集,如下所示,
id fname lname
11 Tom Jerry
11 Tom Harry
有没有办法可以将两行合并为1行,lname值与逗号分隔合并。如下所示,
11 Tom Jerry,Harry
干杯!!
答案 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