这是我一直在使用的查询:
select serial_number, DAQ.qtag_no, min(TOH.start_time), order_number, DAQ.creation_time, qtag_status, ar_code, pro_foundin, pro_category, root_cause, remark from UNIT U
left JOIN WORK_ORDER WO ON WO.order_key = U.order_key
left join TRACKED_OBJECT_HISTORY TOH on TOH.tobj_key = U.unit_key
WHERE U.creation_time > '01/01/2012' AND U.creation_time < '07/20/2012'
AND order_number NOT LIKE '[R]%'
group by serial_number, qtag_no, order_number, DAQ.creation_time, qtag_status, ar_code, pro_foundin, pro_category, root_cause, remark
order by serial_number
现在我得到3280个结果。 在此设置中,有不同的站,例如&#34;组件,&#34; &#34;诊断,&#34;我的min(TOH.start_time)列的目标是返回装配站的第一个开始时间,但目前它在任何一个站点返回第一个开始时间。但是,如果我添加另一个WHERE子句来指定工作站(TOH.op_name =&#39; Assembly&#39;),它会限制结果数量(低至2700)。我想保留3280结果,而不是扫描到装配站的单元,为min(TOH.start_time)列返回NULL。我尝试使用case函数,但这要求我在group by子句中包含TOH.op_name,这是我不想要的。谢谢!
答案 0 :(得分:1)
你应该能够将你的条件添加到我认为的左连接中,如下所示:
select serial_number,
DAQ.qtag_no,
min(TOH.start_time),
order_number,
DAQ.creation_time,
qtag_status,
ar_code,
pro_foundin,
pro_category,
root_cause,
remark
from UNIT U
left
JOIN WORK_ORDER WO
ON WO.order_key = U.order_key
left
join TRACKED_OBJECT_HISTORY TOH
on TOH.tobj_key = U.unit_key
and TOH.op_name = 'Assembly'
WHERE U.creation_time > '01/01/2012' AND U.creation_time < '07/20/2012'
AND order_number NOT LIKE '[R]%'
group by serial_number, qtag_no, order_number, DAQ.creation_time, qtag_status, ar_code, pro_foundin, pro_category, root_cause, remark
order by serial_number