SQL查询结果一字段相同合并,另一字段为数字和逗号合并并去重

例如:表为
id a001 a002
10 1,3,15 无
10 2,3,7 无
17 23 无
36 8 无
17 1,19 无

最后查询结果为
id a001 a002
10 1,2,3,7,15 无
17 1,19,23 无
36 8 无
用SQL Server 数据库 VS2008显示查询结果
表一是我查询两表出来的结果 表二是我希望查询两表出现的结果
例如两表是分别是
制度ID 制度 制度ID 取用条款 评价人
1 规章一 1 1,2 张三
2 规章二 1 2,7,8 李四
2 6 王五
结果是
制度ID 制度 条款
1 规章一 1,2,7,8
2 规章二 6

这个 要看你是什么数据库

对于SQL Server 使用FOR XML的方式
对于MySQL使用 GROUP_CONCAT 函数 的方式进行处理
对于Oracle使用 WMSYS.WM_CONCAT 函数 的方式进行处理

详细例子, 见 参考资料追问

关键是对数字还要去重和排序

追答

CREATE TABLE #A1 (
ID INT,
name VARCHAR(10)
);

CREATE TABLE #A2 (
ID INT,
dt VARCHAR(10),
pe VARCHAR(10)
);
GO

INSERT INTO #A1
SELECT 1, '规章一' UNION ALL
SELECT 2, '规章二';

INSERT INTO #A2
SELECT 1, '1,2', '张三' UNION ALL
SELECT 1, '2,7,8', '李四' UNION ALL
SELECT 2, '6', '王五';
GO

1> SET QUOTED_IDENTIFIER ON
2> go

SQL 语句里面, 不知道有哪个英文单词, 被 屏蔽了, 发不上来.
你 发个消息给我, 给个邮件地址, 我发给你.

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/a57d1a86009e439ff703a67a.html

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-10
1、需要这样搞,显然是数据表设计不合理造成的,如果可以的话,建议重新设计;
2、个人觉得在数据库中实现这种字符串的处理比较麻烦,可以的话,不如取出来,在程序里实现。
相似回答