gpt4 book ai didi

sql - 使用 SQL 选择第 1 列中具有相同值但第 2 列和第 3 列中具有不同值的所有行

转载 作者:行者123 更新时间:2023-12-02 18:51:46 26 4
gpt4 key购买 nike

我有一个看起来像这样的表格

enter image description here

每个[订单号]可以有1个或多个[行号],每个[行号]可以有状态[已发货]或[未发货]。

我想选择所有包含[行号]且同时具有[已发货]和[未发货]的[订单号]。

例如,这些[订单号]同时包含[行号]以及[已发货]和[未发货],因此应选择它

enter image description here

这是我的查询,但它没有返回正确的结果

SELECT [Order number], [Line number], [SHIPPED/UNSHIPPED] 
FROM [mytable]
WHERE [Order number] IN (SELECT [Order number]
FROM [mytable]
GROUP BY [Order number]
HAVING COUNT(*) > 1)
ORDER BY [Order number], [Line number]

请问我的查询中缺少什么,有什么建议吗?谢谢。

最佳答案

这是一种方法:

WITH cte AS (
SELECT [Order number]
FROM mytable
WHERE [SHIPPED/UNSHIPPED] IN ('SHIPPED', 'UNSHIPPED')
GROUP BY [Order number]
HAVING COUNT(DISTINCT [SHIPPED/UNSHIPPED]) = 2
)

SELECT *
FROM mytable
WHERE [Order number] IN (SELECT [Order number] FROM cte);

CTE 查找所有具有已发货和未发货记录的订单号。它的工作原理是首先将给定订单的记录限制为仅包含已发货/未发货的订单,然后断言该组的不同计数为 2,这意味着两种类型的发货都存在。

关于sql - 使用 SQL 选择第 1 列中具有相同值但第 2 列和第 3 列中具有不同值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51797685/

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