iT邦幫忙

DAY 11
5

哇咧~夠了(Oracle SQL)系列 第 11

十一、自賣自誇,(續)老王賣瓜(Oracle SQL 2013/09/26)

  • 分享至 

  • xImage
  •  

上次說到比對BOM表是否一樣?
為何是用月考評比法?
為何我用這個比喻法?

其實,每顆料號背後都是對應一個Item id,這個id很像每個學生的各科目分數,都是數字。當每個學生的成績加總後,如果有兩個學生總分一樣,我們是不是就可以說他們名次一樣?例如:並列第一。

如果每個學生都要考三百個科目,那三百個科目加總後,總分還是一樣的機率有多大?
同樣的,當我把三百顆下階料的Item Id 加總後數字一樣,這兩個BOM表,你說它們不相同的機率剩下多少?

你一定會說,那還是有可能啊!對,沒錯。

好吧,當總分相同時,硬是要比出高低,你是老師,你會怎麼做?還需要我告訴你嗎?

報告: 我會選擇,加比一項成績(ex, 數學),再相同的話,再加比一項成績(英文),直到比出差異為止!我說到這裡還聽不懂的,有沒有?

那換我問,換成BOM表,你要怎麼加比?嗯.....嗯...嗯...嗯...............這個.....那個....
報告老師: 我不會.......

這時候: 我就會搬出家法........來,先做個20下伏地挺身再來......1,2,3,4,.....20

BOM表除了Item id,還有那些數字欄位?至少還有用量,投入站,對吧!偷笑
這樣比對,只剩下500個去比另外的499個而已!驚

如果還是一樣!你說呢?機率剩下多少。剩下的調出來,目測都可以在1分鐘內判斷出,是否誤判吧!偷笑偷笑偷笑偷笑

比對範例:

SELECT Bsb.Organization_Id org_id,
   Msim.Segment1 Assem_Item,
   SUM ( Bcb.Component_Item_Id ) Comp_Item_Id,
   SUM ( Bcb.Component_Quantity ) Component_Qty,
   SUM ( Bcb.Operation_Seq_Num ) op_no,
   SUM ( Bcb.Operation_Seq_Num ) + SUM ( Bcb.Component_Quantity ) + SUM (
   Bcb.Component_Item_Id ) Comp_Sum
FROM BOM_STRUCTURES_B BSB,
   mtl_system_items_vl msim,
   BOM_COMPONENTS_B BCB
WHERE 1                  = 1
AND BSB.BILL_SEQUENCE_ID = BCB.BILL_SEQUENCE_ID
AND bsb.organization_id  = msim.organization_id
AND bsb.assembly_item_id = msim.inventory_item_id
AND Bsb.Organization_Id  = 90
AND Msim.Segment1       IN ( 'PT01.000113', 'PT01.000114' )
GROUP BY Bsb.Organization_Id,   Msim.Segment1 ;

"ORG_ID","ASSEM_ITEM","COMP_ITEM_ID","COMPONENT_QTY","OP_NO","COMP_SUM"
90,"PT01.000113",1573800,5.93480149297943784,183,1573988.93480149297943784
90,"PT01.000114",1770026,5.40523017393887374,193,1770224.40523017393887374

[開發技術組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/dev/1

[鐵人人生組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/life/1


上一篇
十、老王賣瓜(Oracle SQL 2013/09/25)
下一篇
十二、靈異事件(Oracle SQL 2013/09/27)
系列文
哇咧~夠了(Oracle SQL)28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
月半車甫
iT邦研究生 3 級 ‧ 2013-09-26 18:53:10

其實,還有幾個條件可以參考,count(item_id), avg(item_id) 等等,都可以增加判斷。

月半車甫 iT邦研究生 3 級 ‧ 2013-09-27 08:21:01 檢舉

上面忘了把失效日期條件擺上,
其實比對只是個觀念,並非一定要做到1對1比,尤其是這種下階料完全一樣,
可偏偏就是設變多次後,投料順序已經大不同的情況之下,
這種情況下,要去逐一比出兩份BOM表是相同的,還真的很難比。

這種觀念,現實生活,有很多運用,
例如:每個字多一個檢驗法,最後靠著驗算檢驗碼,來判斷是否有被更動過?
或是像是電視訊號傳送、網路封包,都會增加一些小資料,以便還原資料傳輸過程有遺漏時可以自己補正。
又或者像是很多遊戲,也會做雙重驗證,以避免被偷改數據。
總不能傳送兩份資料,再自己逐一比對確認沒有問題後,才顯示在螢幕上吧!那會lag多久?

又例如:盤點一個螺絲包(>1000 PCS)裡面到底還有多少螺絲?
你是要逐一顆一顆算?
還是拿個磅秤,先算100顆的重量,取得單重後,再整包秤重比例換算裡論數量就好?

兩個螺絲包有沒有一樣多的螺絲,秤重就搞定了不是嗎?

方法好不好?其實這篇旨在觀念,這個解法並未真正面對問題去正常解題喔。

0
一級屠豬士
iT邦大師 1 級 ‧ 2013-09-26 19:33:12

WHERE 1 = 1

這個在此有何特殊的效用嗎??

月半車甫 iT邦研究生 3 級 ‧ 2013-09-26 20:28:45 檢舉

只是習慣性,有時候在加減條件時,如果是動到where 那行的條件,會比較麻煩一點,
例如加上註解--,會變成--where segment1 = '111',
那就還要在下一行重打個where ...
用 where 1=1,就永遠不會遇到上述狀況。

我要留言

立即登入留言