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

两表比对后找出不同的部分更新,很复杂的一种 sql2000 上

2012-12-14 
两表比对后找出不同的部分更新,很复杂的一种sql2000 下A表 数据关系 ysyuan-yuan*zk-zridyuanyszkzra0011

两表比对后找出不同的部分更新,很复杂的一种 sql2000 下
A表 数据关系 ys=yuan-yuan*zk-zr


id    yuan   ys    zk  zr
a001  100    70    0.2 10
b002  250    205   0.1 20
a002  200    160   0.1 20  

...
B表 数据关系
 A.yuan=sum(b.yuan)
 A.ys=sum(b.yuan-(b.yuan*a.zk+b.yuan*(a.zr/a.yuan)))
 b.yh=b.yuan*a.zk+b.yuan*(a.zr/a.yuan)---

id     code   yuan   ys    yh
a001   0001   30     30    0     ---未计算的,需更新部分
a001   0003   50     50    0     ---未计算的,需更新部分
a001   0002   20     20    0     ---未计算的,需更新部分
b002   0001   100    82    18
b002   0002   80     65.6  14.4
b002   0003   70     57.4  12.6
a002   0001   40     40    0     ---未计算的,需更新部分
a002   0002   60     60    0     ---未计算的,需更新部分
a002   0003   100    100   0     ---未计算的,需更新部分

...
update 后的B表  我想的是这样的更新条件,但语句不对
where A1.id=b.id and a1.ys<>sum(b.ys) ,再一个是两表关联后更新的语句也不能确定是否对。

id     code   yuan   ys    yh
a001   0001   30     21    9     
a001   0003   50     35    15     
a001   0002   20     14    6      
b002   0001   100    82    18
b002   0002   80     65.6  14.4
b002   0003   70     57.4  12.6
a002   0001   40     32    8     
a002   0002   60     48    12     
a002   0003   100    80    20     

...
真的难啊,光整例子数据就半天!,谢谢高手的解答先!
[最优解释]
update b set b.yh=b.yuan*a.zk+b.yuan*(a.zr/a.yuan),
b.ys=b.yuan-(b.yuan*a.zk+b.yuan*(a.zr/a.yuan))
from a 
where a.id=b.id 
and a.ys<>(select SUM(ys) from b as tb where tb.id=a.id group by b.id)

[其他解释]
update a set a.xx=b.xx


from a,b where a.id=b.id and a.xx>b.xx
诸如此类
[其他解释]
老大:
    虽然对您的回答很感谢,也很敬佩你的级别,但我仔细又仔细的写例子就是怕看不清楚,大体的我也知道,在这里提问就是因为细节处不知道啊,而且一旦回答次数太多,就不会有人再来看贴,也不会回答了,还请看仔细后再回答,拜请不能仔细回答的可以只看不答,非常感谢!
[其他解释]
在这这么多年,发现级别不在多高,在认真,楼上谢谢你!

热点排行