两个Table
BOM (id ,item ,count ,change)
REV(id ,item ,change ,rev_number ,old_revnumber)
关系如下
BOM.item=REV.item
BOM和REV的id都是唯一的
1个Item有多个BOM
1个BOM有多个版本,版本更新通过change(change=0时为初始版本)更新,更新后同时反映在REV中
在REV中每一个版本的BOM都有一条记录,rev_number为当前版本编号,old_revnumber为前一版本编号查询结果要求
给出BOM每个版本中count的和
BOM (id ,item ,count ,change)
REV(id ,item ,change ,rev_number ,old_revnumber)
关系如下
BOM.item=REV.item
BOM和REV的id都是唯一的
1个Item有多个BOM
1个BOM有多个版本,版本更新通过change(change=0时为初始版本)更新,更新后同时反映在REV中
在REV中每一个版本的BOM都有一条记录,rev_number为当前版本编号,old_revnumber为前一版本编号查询结果要求
给出BOM每个版本中count的和
在版本更新中,Count的值會如何變化?给出BOM每个版本中count的和::意思是如果你更新了N次版本,那和=N*count ???
在版本更新中,count会增加,但是只会反映在那一次改变中改变的意思就是在原来的count上要加的count
对于一个不是初始时的版本count只是一个增量
建義你把表改了:
BOM (id,count,change) a;
REV(id ,a.id ,count,change ,rev_number ,old_revnumber) b;在這裡,如果b.count只是每個版本更新進的一個增量,那求和就是count(b.count) where b.change<=“要計算的版本號”
在你的表中BOM中item並不依賴於主健,所已只將REV表中的item=a.id即可。 暈,寫到這裡,發現,表BOM是多余的了,呵呵。只要一個表:
REV(id,count,change,rev_number,old_revnumber) 就可以了。
哈哈
有问题呀,每一个版本只能有一个呀!!!真的不明白。
每一个版本是只有一个count,但在数据库里只有count的变化(增加值),故当前版本的count应是第一版本的count和第一到当前中的增加值的和
---------- ---------- ---------- ----------
test001 aaa 10 0
test002 aaa 20 1
test003 aaa 30 2
test004 aaa 40 3
test005 bbb 10 0SQL> select * from testrev;ID ITEM CHANGE REV_NUMBER OLD_REVNUM
---------- ---------- ---------- ---------- ----------
test0001 aaa 0 version01
test0002 aaa 1 version02 version01
test0003 aaa 2 version03 version02
test0004 aaa 3 version04 version03
test0005 bbb 0 version01SQL> select sum(a."count") from testbom a,
2 (select * from testrev where item='aaa' connect by prior
3 old_revnumber=rev_number start with rev_number='version03') b
4 where a.item='aaa' and a.item=b.item and a.change=b.change;SUM(A."COUNT")
--------------
60SQL>