22,207
社区成员
发帖
与我相关
我的任务
分享
update zb
set zb.分表总用水量=b.分表总用水量
from zb a
left join (
select 总表名称,SUM(用水量) 分表总用水量
from zb,fb
where CHARINDEX(','+LTRIM(fb.分表编号)+'',','+zb.分表编号+',')>0
group by zb.总表名称
) b on a.总表名称=b.总表名称
select left(分表名称,2) as 总表名称,sum(用水量)as 总用水量
into #temp
from fb group by left(分表名称,2)
update zb set 分表总用水量=(select 总用水量 from #temp where left(zb.总表名称,2)=总表名称)
create table #zb(
总表编号 int,
总表名称 nvarchar(10),
分表总用水量 int,
分表编号 varchar(50)
)
insert into #zb
select 1,'A村总表',null,'1001,1002,1003' union all
select 2,'b村总表',null,'1005,1006'
create table #fb(
分表编号 int,
分表名称 nvarchar(10),
用水量 int
)
insert into #fb
select 1001,'A村101号',10 union all
select 1002,'A村201号',5 union all
select 1003,'A村101号',20 union all
select 1005,'B村1号',15 union all
select 1006,'B村2号',5
select a.*,[sum_用水量] = sum(b.用水量)
from #zb a,
#fb b
where charindex(','+cast(b.分表编号 as varchar)+',',','+a.分表编号+',')>0
group by a.总表编号,a.总表名称,a.分表总用水量,a.分表编号
--结果
/*
总表编号 总表名称 分表总用水量 分表编号 sum_用水量
----------- ---------- ----------- -------------------------------------------------- -----------
1 A村总表 NULL 1001,1002,1003 35
2 b村总表 NULL 1005,1006 20
(2 行受影响)
*/
--手工写,没测试过
select a.*,[sum_用水量] = sum(b.用水量)
from zb a,
fb b
where charindex(','+cast(b.分表编号 as varchar)+',',','+a.分表编号+',')>0
group by a.总表编号,a.总表名称,a.分表总用水量,a.分表编号