該表具有'Sales_Order_ID','Sales_Order_Line_Number'和'Sales_Order_Line_staus'等字段。我想檢索'Sales_Order_ID',其中'Sales_Order_ID'的每個記錄具有相同的'Sales_Order_Line_Status'。如何在銷售訂單的每一行都關閉的情況下獲得銷售訂單?
因此,如果銷售訂單X的每個記錄都具有「關閉」狀態,那麼我想檢索它。如果銷售訂單Y有三個狀態爲「已關閉」的記錄和一個狀態爲「已打開」的記錄,那麼我不想檢索它。
我想:
SELECT DISTINCT s1.so_ID, s1.SO_line_status
FROM sales_order_table s1
INNER JOIN sales_order_table s2
ON s1.so_id = s2.so_id
AND s1.so_line_status = s2.so_line_status
ORDER BY s1.so_id
要沒有成功。下面似乎給了我想要的東西相反:
SELECT DISTINCT s1.so_ID, s1.SO_line_status
FROM sales_order_table s1
INNER JOIN sales_order_table s2
ON s1.so_id = s2.so_id
AND s1.so_line_status <> s2.so_line_status
ORDER BY s1.so_id
所以,我想:
SELECT DISTINCT s1.so_ID, s1.SO_line_status
FROM sales_order_table s1
INNER JOIN sales_order_table s2
ON s1.so_id = s2.so_id
AND NOT s1.so_line_status <> s2.so_line_status
ORDER BY s1.so_id
要沒有成功。
然後我完全noob並改變了連接類型,只是希望它能工作。我在這裏關閉還是完全以錯誤的方式去做?另外,我意識到上面的查詢並不會限制結果爲「關閉」狀態,但我想如果我能得到一個只返回所有相同狀態行的結果,那麼我可以將它們限制爲「關閉」。
對不起,如果這不清楚!如果是這樣,我會盡力澄清。
可能的邊緣情況:如果給定'so_ID'的一行或多行具有NULL'SO_line_status',其餘爲'Closed',則'so_ID'將被錯誤地返回,因爲聚合函數忽略NULL。 – 2012-02-01 19:29:27
「HAVING MAX(SO_line_status)= MIN(SO_line_status)''怎麼樣? – 2012-02-01 19:32:15
@MarcusAdams - 因爲OP對封閉狀態特別感興趣。 「我想如果我能得到一個只返回所有相同狀態的線,那麼我可以將它們限制爲」關閉「。」 – 2012-02-01 19:32:55