SQL 多条件查询数据

SQL Query for data with multiple conditions

我正在尝试找到一种方法来创建一个查询,该查询 return 来自个人的交易,当他们提交传统上伴随着其他交易的交易时。

示例(数据如下):

我们看到员工购买了航班(购买航班的日期)。然后,他们提交了交易日期与出发日期和 return 日期相匹配的行李费。然后我们看到他们提交了第三个与任何航空公司日期都不匹配的。

有没有办法确定每个有行李费的人的航空公司 departure/return 日期是否与交易日期相符?在下面的示例中,每个员工的最后行李费是我希望 return 的行,因为它们与各自航班的 depart/return 日期不匹配。

DB NAME = ExpenseTable

Employee Type TransactionDate Depart Return
123 Airline 12052019 12082019 12132019
123 Baggage 12082019 NULL NULL
123 Baggage 12132019 NULL NULL
123 Baggage 12252019 NULL NULL
567 Airline 11052020 11082020 11132020
567 Baggage 11082020 NULL NULL
567 Baggage 11132020 NULL NULL
567 Baggage 11252020 NULL NULL

我认为您可以使用“WHERE NOT EXISTS”来完成您要查找的内容。像这样:

SELECT *
FROM Transactions T1
WHERE T1.Type = 'Baggage'
AND NOT EXISTS ( 
    SELECT *
    FROM Transactions T2
    WHERE T2.Type = 'Airline'
        AND (T1.TransactionDate = T2.Depart OR T1.TransationDate = T2.Arrive)
    )

NOT EXISTS 根据出发日期或到达日期排除任何具有匹配航空公司记录的行李记录。 (单独放置 EXISTS 会起到相反的作用……它只会显示行李交易和匹配的航空公司交易。)你可能可以通过连接来做到这一点,但是 EXISTS/NOT EXISTS 很好,因为它不会给你重复结果集中的行。