求语句,我觉得的点难

blue_apple 2010-06-21 06:09:24
有两个表,
总表数据(zb)
总表编号 总表名称 分表总用水量 分表编号
1 A村总表 ? 1001,1002,1003
2 b村总表 ? 1005,1006
...

分表数据(fb)
分表编号 分表名称 用水量
1001 A村101号 10
1002 A村201号 5
1003 A村101号 20
1005 B村1号 15
1006 B村2号 5
...
1075 G村1号 5

如何将分表中的 “用水量” 合计放在 总表的对应记录“分表总用水量”中
上面的总表的数据应为

总表编号 总表名称 分表总用水量 分表编号
1 A村总表 35 1001,1002,1003
2 b村总表 20 1005,1006,


...全文
116 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_sbx 2010-06-29
  • 打赏
  • 举报
回复
用 kerafan 的方法,加上更新语句。。。

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.总表名称
blue_apple 2010-06-29
  • 打赏
  • 举报
回复
我要将 分表的总用水量 更新到总表的“分表总用水量”的字段里,上面的语句又如何修改呢?
nightmaple 2010-06-29
  • 打赏
  • 举报
回复
简单明了
select left(分表名称,2) as 总表名称,sum(用水量)as 总用水量 
into #temp
from fb group by left(分表名称,2)

update zb set 分表总用水量=(select 总用水量 from #temp where left(zb.总表名称,2)=总表名称)
jaydom 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kerafan 的回复:]
SQL code

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,'……
[/Quote]
upup
blue_apple 2010-06-29
  • 打赏
  • 举报
回复
有点难,我看不懂
blue_apple 2010-06-29
  • 打赏
  • 举报
回复
不好意思,yekang_cui 的语句能用,谢谢!
blue_apple 2010-06-29
  • 打赏
  • 举报
回复
yekang_cui 的语句不能用
贝墨学习 2010-06-29
  • 打赏
  • 举报
回复
别人写的

update zb set 分表总用水量=(
select SUM(用水量) from fb where CHARINDEX(','+LTRIM(分表编号)+'',','+zb.分表编号+',')>0

)
贝墨学习 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 nightmaple 的回复:]

简单明了
SQL code
select left(分表名称,2) as 总表名称,sum(用水量)as 总用水量
into #temp
from fb group by left(分表名称,2)

update zb set 分表总用水量=(select 总用水量 from #temp where left(zb.总表名称,2)=总表名称)
[/Quote]


灵活的运用,哈哈
马老虎 2010-06-21
  • 打赏
  • 举报
回复
观战!
salrookie11544 2010-06-21
  • 打赏
  • 举报
回复
学习!
老黎 2010-06-21
  • 打赏
  • 举报
回复

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 行受影响)
*/
SQL77 2010-06-21
  • 打赏
  • 举报
回复
SELECT A.*,,SUM(B.用水量) FROM A,B WHERE CHARINDEX(','+LTRIM(B.分表编号)+',',','+A.分表编号+',')>0

GROUP BY A.总表编号,A. 总表名称 ,A. 分表编号
老黎 2010-06-21
  • 打赏
  • 举报
回复

--手工写,没测试过
select a.*,[sum_用水量] = sum(b.用水量)
from zb a,
fb b
where charindex(','+cast(b.分表编号 as varchar)+',',','+a.分表编号+',')>0
group by a.总表编号,a.总表名称,a.分表总用水量,a.分表编号

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧