表结构
编号 身份证 职位
001 123456 经理
002 234567 会计师
003 123456 律师
004 123456 XXX
现在要求把身份证相同的记录删除掉,但是保留一条,而职称合并
结果
编号 身份证 职称
001 123456 经理,律师,XXX这样的假如用存储过程或其它怎样写???
编号 身份证 职位
001 123456 经理
002 234567 会计师
003 123456 律师
004 123456 XXX
现在要求把身份证相同的记录删除掉,但是保留一条,而职称合并
结果
编号 身份证 职称
001 123456 经理,律师,XXX这样的假如用存储过程或其它怎样写???
insert into t select 001,'aa'
insert into t select 001,'bb'
insert into t select 002,'cc'
GO
create function f_str(@id int)
returns varchar(1000)
as
begin
declare @ret varchar(1000)
set @ret=''
select @ret=@ret+'.'+name from t where id=@id
set @ret=stuff(@ret,1,1,'')
return @ret
end
GO
select distinct name=dbo.f_str(id) from t
godrop table t
drop function dbo.f_str/*
name
----------------------------------------------------
aa.bb
cc
*/
( 身份証 varchar(100), 職位 varchar(100))
insert into t
select '123456', '經理' union all
select '234567', '會計師' union all
select '123456', '律師' union all
select '123456', '醫生' union all
select '234567', '作家' alter function dbo.aa(@str varchar(10))
returns varchar(100)
as
begin
declare @i varchar(100)
set @i=''
select @i=@i+','+職位 from t where 身份証=@str
return stuff(@i,1,1,'')
endselect 編號=count(*),身份証,dbo.aa(身份証) from t
group by 身份証
編號 身份証
----------- ----------------------------------------------------------------------------------------------------
3 123456 經理,律師,醫生
2 234567 會計師,作家(2 row(s) affected)