日期:2014-05-18  浏览次数:20514 次

超难的查询,请教各位英雄....
有下面的表   table1,里面的数据如下:

ID           Company           Employee
________________________________
1               IBM                 员工1
2               IBM                 员工2
3               IBM                 员工3
4               联想               员工4
5               戴尔               员工5
6               戴尔               员工6
7               联想               员工7
8               联想               员工8
9               IBM                 员工9
10             戴尔               员工10


要求,用SQL   查出如下面的结果

Company       Employee
__________________________________
  IBM           员工1,员工2,员工7,员工10
  戴尔         员工3,员工8,员工9
  联想         员工4,员工5,员工6


可用函数等.   ...   请教各位大虾...   谢谢..



------解决方案--------------------
例:

--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a ',1
UNION ALL SELECT 'a ',2
UNION ALL SELECT 'b ',1
UNION ALL SELECT 'b ',2
UNION ALL SELECT 'b ',3
GO

--合并处理函数
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1, ' '))
END
GO

--调用函数
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
--删除测试
DROP TABLE tb
DROP FUNCTION f_str
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO
------解决方案--------------------
http://community.csdn.net/Expert/topic/5690/5690492.xml?temp=.1814539