gpt4 book ai didi

sql - 如何选择具有一项事件但没有另一项事件的货件

转载 作者:行者123 更新时间:2023-12-02 22:02:13 24 4
gpt4 key购买 nike

表格的简化版

表事件历史:

ActivityHistoryid(PK) | ShipmentID | ActivityCode | Datetime  
1 | 1 | CodeA |
2 | 1 | CodeB |
3 | 1 | CodeC |
4 | 2 | CodeA |
5 | 3 | CodeA |
6 | 3 | CodeB |
7 | 4 | CodeC |

此表包含给定货件发生的事件列表。
任务:我需要选择具有 "CodeA" 且没有 "CodeC" 事件的货件(货件 ID)。
在此示例中,货件编号 2 和 3 将符合条件。
表Shipment:(ShipmentID(PK),其他与shipment相关的列)

谢谢。

最佳答案

试试这个 -

查询:

DECLARE @temp TABLE
(
ActivityHistoryid INT
, ShipmentID INT
, ActivityCode VARCHAR(20)
)

INSERT INTO @temp (ActivityHistoryid, ShipmentID, ActivityCode)
VALUES
(1, 1, 'CodeA'),
(2, 1, 'CodeB'),
(3, 1, 'CodeC'),
(4, 2, 'CodeA'),
(5, 3, 'CodeA'),
(6, 3, 'CodeB'),
(7, 4, 'CodeC')

SELECT *
FROM @temp t
WHERE ActivityCode = 'CodeA'
AND NOT EXISTS(
SELECT 1
FROM @temp t2
WHERE t2.ActivityCode = 'CodeC'
AND t2.ShipmentID = t.ShipmentID
)

输出:

ActivityHistoryid ShipmentID  ActivityCode
----------------- ----------- --------------------
4 2 CodeA
5 3 CodeA

关于sql - 如何选择具有一项事件但没有另一项事件的货件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16706241/

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