gpt4 book ai didi

sql - 排除SQL查询结果-单表

转载 作者:行者123 更新时间:2023-12-04 02:54:26 27 4
gpt4 key购买 nike

我习惯于创建基本查询,所以我被困在一个相当复杂的查询上。

Order Number    Order Line    Package    Part Number    Size    Cost    Reviewed
0001 1 1 A1 S 22.5 Yes
0001 1 1 B2 M 33.1 Yes
0001 1 1 C3 L 11.2 Yes
0001 1 2 A1 XL 15.0 Yes
0001 1 3 A2 M 12.0 Yes
0001 2 1 D1 S 42.9 Yes
0002 1 1 B4 L 72.5 No
0002 1 2 A7 XXL 66.7 No
0002 2 1 C1 XL 11.8 Yes
0002 2 1 B1 S 22.3 Yes
0003 1 1 A1 L 55.2 Yes

我想选择订单号、订单行和包裹。我必须按零件号、尺寸、成本以及是否经过审查来搜索。这个表有大约 30,000 个订单,所以有多个结果(这是我想要的)。我把简单的部分弄下来了,它工作正常。示例:

SELECT
ORDER Number,
ORDER Line,
Package
FROM TABLE
WHERE (Part Number='A1'
AND SIZE='S'
AND Cost='22.5'
AND Reviewed='Yes')
GROUP BY ORDER Number,
ORDER Line,
Package
HAVING count(ORDER Number)=1


Order Number Order Line Package
0001 1 1

这是我的挑战。我必须排除订单行中包裹 <> 1 的结果。因此我上面示例的结果将被排除,因为对于订单号 0001 - 订单行 1 包含包裹 2 和 3。应用此排除时,我提供的表格中唯一有效的结果应该是...

Order Number    Order Line    Package
0001 2 1
0002 2 1
0003 1 1

不要担心空值。性能是一个问题(显然),因为它是一个大表。我环顾四周,但我还没有找到任何可靠的解决方案。您的指导将不胜感激。

最佳答案

这将排除具有匹配 order_number 和 order_line 且包不是 1 的记录:

SELECT
ORDER_Number,
ORDER_Line,
Package
FROM
aTABLE
WHERE NOT EXISTS (SELECT 1
FROM atable AS b
WHERE atable.order_number = b.order_number
AND atable.order_line = b.order_line
AND b.Package != 1)
GROUP BY ORDER_Number,
ORDER_Line,
Package

关于sql - 排除SQL查询结果-单表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947762/

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