首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么累加: 水箱表中所对应的多支水枪,在加水记录表中的加水总重量

2013-01-11 
如何累加: 水箱表中所对应的多支水枪,在加水记录表中的加水总重量本帖最后由 xujie7194 于 2013-01-05 22:

如何累加: 水箱表中所对应的多支水枪,在加水记录表中的加水总重量
本帖最后由 xujie7194 于 2013-01-05 22:26:53 编辑 有2个表:
TBL_WATER_RECORD即加水记录表,可能有成千上万行,包含字段WR_GUN_NUMBER即水枪号,为smallint类型 
                             包含字段 WR_WEIGHT 即为加水的重量

表格如下

WR_GUN_NUMBER(smallint类型)  WR_WEIGHT(int类型)
1                                                 1580
1                                                  790
3                                                  800
4                                                  900
2                                                 1000




和TBL_WATERCAN即 水箱表,每个水箱对应多支不同的水枪号.
                       包含字段WC_WATERCAN_NUM即水箱号,smalint类型.
                       包含字段WC_GUN_NUM 即水枪号,可以有多支水枪,VARCHAR(50)类型

表格如下
WC_WATERCAN_NUM(smallint类型)           WC_GUN_NUM(varchar类型)
1                                                   1,3,4
2                                                   2
3                                                   5,6

现在我想求1号水箱对应的水枪一共加水的重量.
我的语句如下:
SELECT sum (WR_WEIGHT) FROM TBL_WATER_RECORD where charindex(','+rtrim(1)+',',','+(select top 1 WC_GUN_NUM from TBL_WATERCAN order by WC_WATERCAN_NUM)+',')>0  

这条语句把 2号水枪的加水重量也累加到一起了,请问如何解决
[解决办法]

create table TBL_WATER_RECORD(WR_GUN_NUMBER smallint,WR_WEIGHT int) 


insert into tbl_water_record
select 1,1580 union all
select 1,790 union all
select 3, 800 union all
select 4, 900 union all
select 2,1000
create table TBL_WATERCAN(WC_WATERCAN_NUM smallint,WC_GUN_NUM VARCHAR(50))
insert into TBL_WATERCAN
select 1,'1,3,4' union all
select 2,'2' union all
select 3,'5,6'
go
select a.WC_WATERCAN_NUM,sum(b.WR_WEIGHT)ww
from TBL_WATERCAN a inner join TBL_WATER_RECORD b on charindex(','+ltrim(b.WR_GUN_NUMBER)+',',','+a.WC_GUN_NUM+',')>0
group by a.WC_WATERCAN_NUM
/*
WC_WATERCAN_NUM ww
--------------- -----------
1               4070
2               1000

(2 行受影响)

*/
go
drop table TBL_WATER_RECORD,TBL_WATERCAN

热点排行