读书人

SQL字段拆分,该怎么处理

发布时间: 2013-04-12 18:33:12 作者: rapoo

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
王 项目一 2


张 项目三 3
张 项目一 1

(5 row(s) affected)
*/

读书人网 >SQL Server

热点推荐