create table @t (type char,china_sign char, no, char(5), names varchar(1000))
DECLARE cur1 CURSOR
FOR select type, china_sign, no, [name] from table1 order by type, china_sign
OPEN cur1
declare @type char
declare @china_sign char
declare @no char(5)
declare @name varchar(100)
declare @ltype char
declare @lchian_sign char
set @ltype = ''
set @lchian_sign = ''
FETCH NEXT FROM cur1 into @type, @china_sign, @no, @name
While @@FETCH_STATUS = 0
begin
if @type = @ltype and @china_sign = @lchina_sign
begin
update #t set names = names + ',' + @name where type = @type and china_sign = @china_sign
end
else
begin
insert #t
select @type, @china_sign, @no, @name
set @ltype = @type
set @lchian_sign = @chian_sign
end
FETCH NEXT FROM cur1 into @type, @china_sign, @no, @name
End
CLOSE cur1
DEALLOCATE cur1
select * from #t order by type, china_sign
drop table #t
Declare @name varChar(500),@type varChar(1),@C_S varChar(1),
@No varChar(8),@Swap char(1)
Create table #tmp01(type varChar(1),china_sign varChar(1),no varChar(8),
Name varChar(500))
Select @type='',@C_S='',@No='',@Name='',@swap=''
Declare Cu_A Cursor For Select Name,Type,China_Sing,No From 表
Open Cu_A
Fetch Cu_A Into @type,@C_S,@No,@Name
while @@FETCH_STATUS=1
begin
if @C_S<>@swap
begin
Set @Swap=@C_S
Insert into #tmp01 values(@type,@C_S,@No,@Name)
end
else
Update #tmp01 Set Name=Name+','+@Name where type=@type and no=@no
Fetch Cu_A Into @type,@C_S,@No,@Name
end
Close Cu_A
Deallocate Cu_A
1,建自定义函数
create function getstr(@id char(1))
returns varchar(8000)
as
begin
declare @str varchar(2000)
set @str=''
select @str=@str+rtrim(name)+',' from table1 where type+china_sign=@id
select @str=left(@str,len(@str)-1) where @str<>''
return @str
end
GO
2,
select type, china_sign, no,dbo.getstr(china_sign) names from table1 group by type,china_sign,no
1,建自定义函数
create function getstr(@id Nchar(4000))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(2000)
set @str=N''
select @str=@str+rtrim(name)+N',' from table1
where type+china_sign=@id
if @str<>N''
set @str=left(@str,len(@str)-1)
return @str
end
GO
2,
select type, china_sign, no, dbo.getstr(type+china_sign) as names from table1 group by type, china_sign, no