上次說到比對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
其實,還有幾個條件可以參考,count(item_id), avg(item_id) 等等,都可以增加判斷。
上面忘了把失效日期條件擺上,
其實比對只是個觀念,並非一定要做到1對1比,尤其是這種下階料完全一樣,
可偏偏就是設變多次後,投料順序已經大不同的情況之下,
這種情況下,要去逐一比出兩份BOM表是相同的,還真的很難比。
這種觀念,現實生活,有很多運用,
例如:每個字多一個檢驗法,最後靠著驗算檢驗碼,來判斷是否有被更動過?
或是像是電視訊號傳送、網路封包,都會增加一些小資料,以便還原資料傳輸過程有遺漏時可以自己補正。
又或者像是很多遊戲,也會做雙重驗證,以避免被偷改數據。
總不能傳送兩份資料,再自己逐一比對確認沒有問題後,才顯示在螢幕上吧!那會lag多久?
又例如:盤點一個螺絲包(>1000 PCS)裡面到底還有多少螺絲?
你是要逐一顆一顆算?
還是拿個磅秤,先算100顆的重量,取得單重後,再整包秤重比例換算裡論數量就好?
兩個螺絲包有沒有一樣多的螺絲,秤重就搞定了不是嗎?
方法好不好?其實這篇旨在觀念,這個解法並未真正面對問題去正常解題喔。
WHERE 1 = 1
這個在此有何特殊的效用嗎??
只是習慣性,有時候在加減條件時,如果是動到where 那行的條件,會比較麻煩一點,
例如加上註解--,會變成--where segment1 = '111',
那就還要在下一行重打個where ...
用 where 1=1,就永遠不會遇到上述狀況。