3

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

示例(数据如下):

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

如果每个人的航空公司出发/返回日期与交易日期匹配,是否有办法识别每个收取行李费的人?在下面的示例中,每个员工的最后行李费是我希望返回的行,因为它们与各自航班的出发/返回日期不匹配。

数据库名称 = 费用表

员工 类型 交易日期 离开 返回
123 航空公司 12052019 12082019 12132019
123 行李 12082019 无效的 无效的
123 行李 12132019 无效的 无效的
123 行李 12252019 无效的 无效的
567 航空公司 11052020 11082020 11132020
567 行李 11082020 无效的 无效的
567 行李 11132020 无效的 无效的
567 行李 11252020 无效的 无效的
4

1 回答 1

1

我认为你可以使用“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)
    )

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

于 2021-03-24T16:33:13.573 回答