sql – 如何获得销售订单的每一行都已关闭的销售订单?
发布时间:2020-12-12 08:57:49 所属栏目:MsSql教程 来源:网络整理
导读:该表在其他字段中具有“Sales_Order_ID”,“Sales_Order_Line_Number”和“Sales_Order_Line_staus”.我想检索’Sales_Order_ID’,其中’Sales_Order_ID’的每条记录都具有相同的’Sales_Order_Line_Status’. 因此,如果销售订单X的每条记录都具有“已关闭”
该表在其他字段中具有“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并改变了连接类型只是希望它能工作.我是在这里关闭还是完全以错误的方式进行? 此外,我意识到上面的查询不会将结果限制为“已关闭”状态,但我想如果我能得到一个只返回所有相同状态行的结果,那么我可以将它们限制为“已关闭”. 对不起,如果不清楚的话!如果是这样,我会尽力澄清. 解决方法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' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |