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 很好,因为它不会给你重复结果集中的行。
我正在尝试找到一种方法来创建一个查询,该查询 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 很好,因为它不会给你重复结果集中的行。