2016-08-31 26 views
0

我試圖找到表中過去幾周沒有任何活動的記錄(工單)。
我需要從日期字段不在過去兩週內的當前日期表中選擇不同的工作訂單。在表中找到過去幾周沒有任何活動的記錄

如果日期比過去兩週更早,我可以得到工單。

select distinct WorkOrder 
from SMWorkOrder 
where SMCo = 1 and WorkOrder in 
      (select WorkOrder 
      from SMWorkCompleted 
      where SMCo = 1 and Date < DATEADD(WEEK, -2, GETDATE())) 

我該如何獲得此表中的行數超過過去兩週並且在過去兩週內沒有任何行的工單?

+0

這是一個有點混亂。你的桌子是什麼樣的?您是否說過在過去的兩週內工作訂單可以,也不能有活動?您還使用了哪些DBMS? – CodyMR

+0

SWorkCompleted或SWorkOrder或兩者都是smco嗎? – Matt

+0

SMWorkOrder表保存所有的WO。 SMWorkCompleted持有工單上的活動。每個「活動」是SMWorkCompleted表中的一行,幷包含日期字段。這張桌子也有WO。 SMCo在兩個表中都需要限制爲1 我希望在過去兩週內獲得所有尚未開展活動的工作訂單(SMWorkCompleted表中的新條目)。工作單可以在該表中具有在過去兩週和之前的日期的行。那份工作令我不想看到。只有那些在過去兩週之前只有*行* – MAT

回答

1

使用左外連接真的效果很好的情況是這樣的:

SELECT 
    o.WorkOrder 
FROM 
    SMWorkOrder o 
    LEFT JOIN SMWorkCompleted c 
    ON o.WorkOrder = c.WorkOrder 
    AND c.Date >= DATEADD(WEEK,-2,CAST(GETDATE() AS DATE)) AND c.Date <= GETDATE() 
    AND c.SMCo = 1 
WHERE 
    c.WorkOrder is NULL 
    AND o.SMCo = 1 

但請注意,我懷疑你有釤鈷兩個表也許你做,但你應該從哪裏條件,如果不將其刪除SWorkOder表和/或從接通狀態中刪除該參加如果在SWorkCompleted表

對於在方法你真的想未使用:

SELECT 
    o.WorkOrder 
FROM 
    SWorkOrder o 
WHERE 
    o.SMCo = 1 
    AND o.WorkOrder NOT IN (
     SELECT 
      WorkOrder 
     FROM 
      SMWorkCompleted c 
     WHERE 
      c.Date >= DATEADD(WEEK,-2,CAST(GETDATE() AS DATE)) AND c.Date <= GETDATE() 
      AND c.SMCo = 1 
    ) 

注意如果WorkOrder可能爲NULL,請勿使用!

的NOT EXISTS方法效果很好過:

SELECT 
    o.WorkOrder 
FROM 
    SWorkOrder o 
WHERE 
    o.SMCo = 1 
    AND NOT EXISTS (
     SELECT 
      WorkOrder 
     FROM 
      SMWorkCompleted c 
     WHERE 
      c.WorkOrder = o.WorkOrder 
      AND c.Date >= DATEADD(WEEK,-2,CAST(GETDATE() AS DATE)) AND c.Date <= GETDATE() 
      AND c.SMCo = 1 
    ) 
+0

感謝您的輸入!但是,這些查詢中的每一個都是從SMWorkOrder表中提取所有工作訂單。 我想在過去兩週內獲得所有尚未開展任何活動的工作訂單(SMWorkCompleted表中的新條目),但可能在過去兩週之前已開展活動 – MAT

+0

這隻有在所有工單在過去2周內都沒有c.Date。 – Matt

+0

或SMWorkCompleted上的SMCo = 1會導致問題,如果這會排除過去2周內的所有活動。 – Matt

-1

嘗試使用MAX日期子集您的工作訂單...

+0

這絕對是一個評論,而不是答案/解決方案,我不確定你在提出什麼建議。 – Matt

相關問題