gpt4 book ai didi

sql - 如何获取销售订单的每一行都已关闭的销售订单?

转载 作者:行者123 更新时间:2023-12-01 21:31:42 37 4
gpt4 key购买 nike

该表具有“Sales_Order_ID”、“Sales_Order_Line_Number”和“Sales_Order_Line_staus”等字段。我想检索“Sales_Order_ID”,其中“Sales_Order_ID”的每条记录都具有相同的“Sales_Order_Line_Status”。

因此,如果销售订单 X 的每条记录的状态均为“已关闭”,那么我想检索它。如果销售订单 Y 有 3 条状态为“已关闭”的记录和 1 条状态为“打开”的记录,那么我不想检索它。

我尝试过:

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

没有成功。

然后我完全变成了菜鸟,改变了连接类型,只是希望它能起作用。我是在接近这里还是完全以错误的方式进行?

此外,我意识到上面的查询不会将结果限制为“关闭”状态,但我想如果我可以获得一个仅返回所有相同状态行的查询,那么我就可以将它们限制为“关闭”。

抱歉,如果不清楚!如果是这样,我会尽力澄清。

最佳答案

SELECT so_ID
FROM sales_order_table
GROUP BY so_ID
HAVING MAX(SO_line_status) = 'Closed' AND
MIN(SO_line_status) = 'Closed' AND
COUNT(CASE WHEN SO_line_status IS NULL THEN 1 END) = 0

如果您的 RDBMS 支持,您也可以使用 EXCEPT

SELECT so_ID
FROM sales_order_table
WHERE SO_line_status = 'Closed'
EXCEPT
SELECT so_ID
FROM sales_order_table
WHERE SO_line_status IS NULL OR SO_line_status <> 'Closed'

关于sql - 如何获取销售订单的每一行都已关闭的销售订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101631/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com