日期:2014-05-17  浏览次数:20442 次

SQL字段拆分

姓名    完成项目 
王      项目一/2*项目二/4*项目二/4  
王      项目二/1*项目三/1 
张      项目一/1*项目三/3
王 
我想得出
行么    完成项目     完成次数
王      项目一         1
王      项目二         9
王      项目三         1
张      项目一         1
张      项目三         3

------解决方案--------------------
create table #( name varchar(20),item varchar(60))

insert into #
select '王',      '项目一/2*项目二/4*项目二/4' union all
select '王',      '项目二/1*项目三/1' union all
select '张',      '项目一/1*项目三/3'


select top 100 id=identity(int,1,1) into #1 from sysobjects 


update #
set item=replace(item,'/','*')


select id=identity(int,1,1), name,substring(t1.item,t2.id,charindex('*',t1.item+'*',t2.id)-t2.id) item1 into #3 from # t1,#1 t2
where substring('*'+t1.item,t2.id,1)='*'


select name,item1,sum(cast(num as int))num
from(
select name,item1,(select item1 from #3 where t.name=name and id=t.id+1)num from #3 t where id%2=1
)a group by name,item1
order by name,item1 


/*
name                 item1                                                        num         
-------------------- ------------------------ ----------- 
王                    项目二                                                          9
王                    项目三                                                          1
王                    项目一