[英]How to do multiple Left join with multiple ids with just 1 row (Top 1) on the right table
我在多個ID上做多個左連接。 我試圖只匹配右表中的1個結果,但不確定當連接在多個ID上時如何編寫嵌套選擇。
最后2個左連接返回超過1行,即使連接多個ID(預期)但是我只對匹配右表上結果的ONE(Top 1)感興趣。
我已經查看了有關左連接的其他帖子,但沒有一個包括加入多個ID。
基本上我正在嘗試從操作表(左表)中獲取操作列表。 每個操作都有一個標識符,其中包含Type,Base ID,Lot ID,Split ID,Sub ID和Sequence No,這些標識符可以實現獨特的操作。 提到的所有表都列出了這些列。
但是,“需求”表“R”對於每個唯一操作可能有多於一行,我只需要1個要求。 “Operation_Audit”表“OA”的情況也是如此。
我只為選擇下的每個表放了1列,以方便閱讀。
Select
O.SETUP_HRS As [Setup Time], O.RUN_HRS As [Run Time],
OS.RESOURCE_ID As [Shop Resource],
WO.PART_ID As [Part ID / Assy],
P.DESCRIPTION As [Part / Assy Description],
WOV.DESCRIPTION As Description,
R.CLOSE_DATE As [Req Issue Date],
OA.RESULT_DETAIL As Reason
From OPERATION As O
Inner Join OPERATION_SCHED OS On
O.WORKORDER_TYPE = OS.WORKORDER_TYPE And
O.WORKORDER_BASE_ID = OS.WORKORDER_BASE_ID And
O.WORKORDER_LOT_ID = OS.WORKORDER_LOT_ID And
O.WORKORDER_SPLIT_ID = OS.WORKORDER_SPLIT_ID And
O.WORKORDER_SUB_ID = OS.WORKORDER_SUB_ID And
O.SEQUENCE_NO = OS.SEQUENCE_NO
Inner Join WORK_ORDER WO On
O.WORKORDER_TYPE = WO.[TYPE] And
O.WORKORDER_BASE_ID = WO.BASE_ID And
O.WORKORDER_LOT_ID = WO.LOT_ID And
O.WORKORDER_SPLIT_ID = WO.SPLIT_ID
Left Outer Join PART P On
P.ID = WO.PART_ID
Inner Join CR_WO_PART WOV On
O.WORKORDER_TYPE = WOV.[TYPE] And
O.WORKORDER_BASE_ID = WOV.BASE_ID And
O.WORKORDER_LOT_ID = WOV.LOT_ID And
O.WORKORDER_SPLIT_ID = WOV.SPLIT_ID And
O.WORKORDER_SUB_ID = WOV.SUB_ID
Left Outer Join REQUIREMENT R On
O.WORKORDER_TYPE = R.WORKORDER_TYPE And
O.WORKORDER_BASE_ID = R.WORKORDER_BASE_ID And
O.WORKORDER_LOT_ID = R.WORKORDER_LOT_ID And
O.WORKORDER_SPLIT_ID = R.WORKORDER_SPLIT_ID And
O.SEQUENCE_NO = R.OPERATION_SEQ_NO And
O.WORKORDER_SUB_ID = R.WORKORDER_SUB_ID
Left Outer Join OPERATION_AUDIT OA On
O.WORKORDER_TYPE = OA.WORKORDER_TYPE And
O.WORKORDER_BASE_ID = OA.WORKORDER_BASE_ID And
O.WORKORDER_LOT_ID = OA.WORKORDER_LOT_ID And
O.WORKORDER_SPLIT_ID = OA.WORKORDER_SPLIT_ID And
O.WORKORDER_SUB_ID = OA.WORKORDER_SUB_ID And
O.SEQUENCE_NO = OA.SEQUENCE_NO And
OA.RESULT = 'M'
Where
O.COMPLETED_QTY <= O.CALC_END_QTY And
WO.SUB_ID = '0' And
O.WORKORDER_TYPE = 'W' And
OS.SCHEDULE_ID = 'STANDARD' And
FilterCriteria = @FilterCriteria
我將創建查詢,從而為表R和OA中的每個唯一操作返回所需的一行。 然后將這些查詢設置為公用表表達式(CTE)。 然后執行上面的原始查詢(左邊足夠好,不需要外部)但是加入單個記錄CTE而不是R和OA。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.