您的位置:首页 > 数据库

数据库数据横排显示2

2015-12-31 09:37 309 查看
if object_id('#case') is not null
drop table #case
go
create table #case( id int identity ,
issue_type varchar(20) null,
asset_id int null)
go
insert into #case select 'for  issue',1701335119
insert into #case(issue_type,asset_id) select 'for  issue',1701335120
insert into #case(issue_type,asset_id) select 'for  issue',1701335121
insert into #case(issue_type,asset_id) select 'for  issue',1701335127
insert into #case(issue_type,asset_id) select 'for  issue',	1701335130
insert into #case(issue_type,asset_id) select 'for21 issue',1701335131
insert into #case(issue_type,asset_id) values ('for21 issue',1701335132)
insert into #case(issue_type,asset_id) values ('for21 issue',1701335135)
insert into #case(issue_type,asset_id) values ('for21 issue',1701335140)
go
select * from #case

if object_id('#t11') is not null
drop table #t11
go
create table #t11(issue_type varchar(20),asset_id_comb varchar(250) null)
go
declare @id int,@ei int,@asset_ID varchar(255),@asset_ID_tmp varchar(15),@issue_type varchar(255),@tmp varchar(255)
select @id=min(id),@ei=max(id)+1 from #case
select @issue_type=issue_type from #case where id=@id
set @asset_ID=''
set @asset_ID_tmp=''
while @id<@ei
begin
select @tmp=issue_type,@asset_ID_tmp=convert(varchar(15),asset_id) from #case where id=@id

if( @issue_type=@tmp)
begin
set @asset_ID=@asset_ID+'|'+@asset_ID_tmp
print 'issue_type=%1!,asset_id=%2!',@issue_type,@asset_ID
end
else
begin
insert into #t11 select @issue_type,@asset_ID
print '%1!,%2!',@issue_type,@asset_ID
set @asset_ID=''
end

if @id=@ei-1
insert into #t11 select @issue_type,@asset_ID

set @issue_type=@tmp

set @id=@id+1
end
go
select * from #t11

--用update迭代
if object_id('#t1') is not null
drop table #t1
go

select issue_type,asset_id,ASSET_ID=convert(varchar(200), null),ProcessStep=convert( INT, NULL)
into #t1
from #case
order by issue_type
go
declare @issue_type varchar(20) ,@ASSET_ID VARCHAR(200),@Step INT -- record process step
SET @Step=0
SET @ASSET_ID=''

UPDATE #t1
SET ASSET_ID = CASE
WHEN issue_type=@issue_type  THEN convert(varchar(15),asset_id)+' | '+@ASSET_ID
ELSE convert(varchar(15),asset_id)
END,
@ASSET_ID = CASE
WHEN issue_type=@issue_type  THEN	convert(varchar(15),asset_id)+' | '+@ASSET_ID
ELSE convert(varchar(15),asset_id)
END,
@issue_type = issue_type,
@Step = @Step + 1,
ProcessStep = @Step
GO
select *
from #t1
group by issue_type
having ProcessStep=max(ProcessStep)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: