SQl 2008 合并表字段
问一下 大虾,通过多表查询得出一下结果
ID NAME1 NAME2
---------- ---------- ----------
1 aa x1
1 bb x1
1 cc x1
2 mm y1
2 vv y1
我想要的结果:
ID NAME1 NAME2
---------- ---------- ----------
1 aa,bb,cc x1
2 mm,vv y1
SQL sever 语句怎么实现
[解决办法]
这个要写一个自定义函数来实现,sql无法实现。
[解决办法]
SELECT id,STUFF((SELECT ','+name FROM Test WHERE id=T.id FOR XML PATH('')),1,1,'') AS 别名 FROM Test T GROUP BY T.id
[解决办法]
WITH tb(ID, NAME1, NAME2)
AS
(
SELECT 1,'aa','x1'
UNION ALL
SELECT 1,'bb','x1'
UNION ALL
SELECT 1,'cc','x1'
UNION ALL
SELECT 2,'mm','y1'
UNION ALL
SELECT 2,'vv','y1'
)
SELECT id,
name1 = STUFF((SELECT DISTINCT ',' + name1 FROM tb a WHERE a.id = tb.id FOR XML PATH('')),1,1,''),
name2 = STUFF((SELECT DISTINCT ',' + name2 FROM tb a WHERE a.id = tb.id FOR XML PATH('')),1,1,'')
FROM tb
GROUP BY id;
SET @tempID = @ID
SET @tempName1 = @tempName1+',' + @Name1
SET @tempName2 = @Name2
SELECT @tempName1
END
ELSE
BEGIN
INSERT INTO @t (ID,Name1,Name2)SELECT @tempID,@tempName1,@tempName2
SET @tempID = @ID
SET @tempName1 = @Name1
SET @tempName2 = @Name2
INSERT INTO @t (ID,Name1,Name2)SELECT @tempID,@tempName1,@tempName2
END
FETCH NEXT FROM Test_Cursor INTO @ID,@Name1,@Name2
END
CLOSE Test_Cursor
DEALLOCATE Test_Cursor
SELECT * FROM @t
这个是游标做的 技术不行 还是有一点差距 没时间帮你弄了 要有事去了。如果下次来看没解决我就继续看