Query

SQL初學者問題

  • October 31, 2018

我有一個表,如下所示,包含以下列:ClientID、PoNumber、Consignment_Number、Status

如您所見,單個客戶將有多個 PO 編號(採購訂單),每個 PO 將包含少量交貨。如果 PO 上有任何計劃的托運並且至少一個托運已完成狀態,我正在嘗試提取 PO 編號和所有托運編號的列表

我希望只看到綠色行作為最終輸出,

任何幫助,將不勝感激

在此處輸入圖像描述

一種選擇:

SELECT * FROM tablename
WHERE poNumber IN (SELECT poNumber FROM tablename WHERE Status = 'Complete')
AND   poNumber IN (SELECT poNumber FROM tablename WHERE Status = 'Planned')

另一種選擇,理解起來有點複雜,而且成本更高(至少在我測試它的非常小的數據子集上):

SELECT * FROM @tablename
WHERE poNumber IN (SELECT poNumber FROM @tablename
                  GROUP BY ponumber HAVING COUNT(DISTINCT(Status)) > 1)

引用自:https://dba.stackexchange.com/questions/163737