SQL如何分类后顺序连接字串

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:51:30
我有一个表:
table1
部门 人员 职称
ORG1 STA1 MAS
ORG1 STA2
ORG1 STA3
ORG2 STA4 MAS
ORG2 STA5

想要查出以下的结果:

部门 主管 人员
ORG1 STA1 STA1;STA2;STA3
ORG2 STA4 STA4;STA5

请各位高人解惑,谢谢!
结果中的'STA1;STA2;STA3'是一字串,得到ORG1所有职员的ID并用;分隔

----以下在sql2005测试通过。

create table table1(bm varchar(10),ry varchar(10),mas varchar(10))
insert table1
select 'org1','sta1','mas' union all
select 'org1','sta2','' union all
select 'org1','sta3','' union all
select 'org2','sta4','mas' union all
select 'org2','sta5',''

---以前就回答过这样的问题了,给你2个参考方案:
--实现方式1、利用函数
--分析,可以按照ID进行分组,然后对每个ID的value进行函数合并。
if object_id(N'dbo.f_str',N'FN') is not null
drop function dbo.f_str
go
CREATE FUNCTION dbo.f_str(@bm varchar(10))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @r varchar(1000)
SELECT @r = isnull(@r+';','')+ry FROM table1 WHERE bm=@bm
RETURN @r
END
GO
-- 调用函数
select * from(select bm,mas from table1 where (mas<>'' and not mas is null))t1