oracle 中可以用这个方法来做:
CREATE OR REPLACE FUNCTION GetAllResult(column varchar2)
RETURN VARCHAR2
IS
temp VARCHAR2(4000);
lp varchar2(4000);
BEGIN
FOR lp IN (SELECT name FROM S_COLMERGE WHERE SEQ=column) LOOP
temp:= temp||lp.name;
END LOOP;
temp:= rtrim(temp,1);
RETURN temp;
END;
然后:
select distinct seq, GetAllResult(seq) from S_COLMERGE
--------------------------------
sqlserver中可以 :
alter FUNCTION fn_sqclassroom(@pid varchar(100) )
--合并多个申请班级的实习室
RETURNS varchar(8000)
AS
BEGIN
DECLARE @values varchar(8000)
SET @values = ''
SELECT @values = @values + ',' + '实习室: ' + CLASSROOM FROM EX_SQCLASS_INFO tb WHERE PID=@pid
RETURN STUFF(@values, 1, 1, '')
END
调用
select pid ,
classroom = dbo.fn_sqclassroom(pid)
from EX_SQCLASS_INFO
group by
pid
-------------
这两种方法在各自环境中都测试可行的。你换成对应的表和字段就可以了
SQL Server 2005解决方案:
select 姓名,stuff((select ','+爱好 from 表名 where 姓名= t.姓名 for xml path('')),1,1,'') as s
from 表名 as t
group by 姓名