我正试图从制造系统中获取一些信息,这些信息跟踪组装设备时使用的部件。所有数据都在同一个表,设备,模块和组件中。设备由模块和组件组成,两者都注册为组件(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 :(得分: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列,因为您列出的值与主表中的任何内容都不对应。