日期:2014-05-17 浏览次数:20534 次
表1
姓名 完成项目
王 项目一/2*项目二/4
王 项目二/1*项目三/1
张 项目一/1*项目三/3
表2
人员 定量 定量次数
王 项目一 3
王 项目二 2
王 项目三 5
张 项目一 2
张 项目二 3
张 项目三 2
我想得出
人员 定量 定量次数 完成次数
王 项目一 3 2
王 项目二 2 5
王 项目三 5 1
张 项目一 2 1
张 项目二 3 0
张 项目三 2 3
select * into #t1 from
(
select '王'name, '项目一/2*项目二/4' pro
union all select '王', '项目二/1*项目三/1'
union all select '张', '项目一/1*项目三/3'
)a
select * into #t2 from
(
select '王'name, '项目一' pro, 3 num
union all select '王', '项目二', 2
union all select '王', '项目三', 5
union all select '张', '项目一', 2
union all select '张', '项目二', 3
union all select '张', '项目三', 2
)a
;with cte as(
select a.name,b.pro
from (
select name,convert(xml,'<row><b>'+rtrim(replace(pro,'*','</b><b>'))+'</b></row>')pro from #t1)a
outer apply (select C.v.value('.','nvarchar(100)') pro from a.pro.nodes('/row/b')C(v))b
)
,cte1 as(
select name,left(pro,charindex('/',pro)-1)pro,convert(int,substring(pro,charindex('/',pro)+1,len(pro)))num from cte
)select a.*,isnull(b.num,0)bnum from #t2 a left join
(select name,pro,sum(num)num from cte1 group by&nbs