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

大神们进来上,求帮助

2013-02-19 
大神们进来下,求帮助有一个A表, 金额是空,一个客户有唯一的一个批次客户批次金额1 光大20122 农行20133 建

大神们进来下,求帮助
有一个A表, 金额是空,一个客户有唯一的一个批次
  客户  批次  金额
1 光大  2012  
2 农行  2013
3 建行  2014

有一个B表,一个客户可能有多个批次
  客户  批次  金额
1 光大  2012  100
2 光大  2013  140 
3 光大  2014  150
4 农行  2012  111


现在我查询A表,select 客户,批次 from A where 条件
结果为:
  客户 批次
1 光大  2012  
2 农行  2013
3 建行  2014

然后我现在想 通过这个查询的结果的每一行,去查询B表金额的总数,然后去通过客户,批次 更新A表的金额



刚刚可能我没说明白,在说一下

[解决办法]
2005以上可用:

;
WITH    cte
          AS ( SELECT   客户 ,
                        批次 ,
                        SUM(金额) 金额
               FROM     b
               GROUP BY 客户 ,
                        批次
             )
    UPDATE  a
    SET     a.金额 = b.金额
    FROM    a
            INNER JOIN cte b ON a.客户 = b.客户
                                AND a.批次 = b.批次

[解决办法]

update a set a.金额=b.money
from tbA as a cross apply 
(select sum(money)money from tbB as b where a.客户=b.客户 and a.批次=b.批次 group by b.客户,b.批次)as b 

1楼2楼都是正解,我的方法也可以,我跟2楼版主的一样,都需要2005以上版本才能运行
如果是2000的话可以考虑1楼的方法
[解决办法]
如果是2000的话,可以把我那个with里面的语句先存到临时表,更新完删除即可。

热点排行