2014-01-26 34 views
0

我試圖從製造系統中抓取一些信息,跟蹤組裝設備時使用哪些部件。所有數據都在同一個表格,設備,模塊和組件中。一個設備是由模塊和組件組成的,並且都被註冊爲具有序列號的組件(ASSY)。 COMP列用於註冊哪些組件進入模塊,以及哪些組件和模塊進入設備。 INVENTORY_ID列跟蹤哪個模塊進入哪個設備。加入一張表到一行結果

基本表的結構是這樣的:

SERIALNO ASSY ASSYREV COMP COMPREV ORDERNO ASSEMBLED_DATE_TIME  INVENTORY_ID COMP_SERIALNUMBER 
======== ==== ======= ==== ======= ======= ======================= ============= ================== 
499222 M1 V005 C1 F  NULL  2013-11-14 04:08:46.000 NULL   50879 
499223 M1 V005 C1 F  NULL  2013-11-14 04:11:30.000 NULL   50947 
499224 M1 V002 C1 B  NULL  2013-11-14 04:13:58.000 NULL   50939 
502270 D1 A  M1 V005 20532642 2013-11-15 09:10:47.000 499222  NULL 
502277 D2 A  M1 V002 20532641 2013-11-15 08:59:49.000 499224  NULL 
502479 D3 A  M1 V005 20532647 2013-11-15 09:32:15.000 499223  NULL 
502270 D1 A  C2 F  20532642 2013-11-15 09:10:47.000 NULL   43542 
502270 D1 A  M2 V011 20532642 2013-11-15 09:10:00.000 498644  NULL 

所以,我的問題是,我需要什麼設備與COMPREV F中的C1成分已經被組裝成(通過模塊)的信息。結果應該如下所示。這可以通過單個查詢來完成嗎?

SERIALNO ASSY COMP COMPREV ORDERNO ASSEMBLED_DATE_TIME  COMP_SERIALNO 
======== ==== ==== ======= ======== ======================== ============= 
502270 D1 C1 F  20532642 2013-11-15 09:10:47.000 50879 
502479 D3 C1 F  20532647 2013-11-15 09:32:15.000 50947  
+0

你忘記在結果中描述COMP_SERIALNO嗎? – Hamidreza

回答

0

如果我理解正確的問題,我相信這是你想要什麼:

select t2.SERIALNO, t2.ASSY, t1.COMP, t1.COMPREV, t2.ORDERNO, t2.ASSEMBLED_DATE_TIME, COMP_SERIALNO = t1.SERIALNO 
from bigtable t1 
join bigtable t2 on t1.ASSY = t2.COMP and t1.SERIAL_NO = INVENTORY_ID 
where t1.COMP = 'C1' 
and  t1.COMPREV = 'F' 

我是不知道的COMP_SERIALNO列,因爲你列出的值不符合任何東西主表。