SQL根据2个条件过滤内部查询中的数据

问题描述 投票:0回答:1

我有一个棘手的 SQL 问题,希望得到任何指导。我有下表名为 TableB:

日期时间 党派
2022-12-24T15:20:00.782Z A 部分
2022-12-24T15:21:00.782Z B 部分
2022-12-24T15:22:00.782Z B 部分
2022-12-24T15:23:00.782Z A 部分
2022-12-24T15:24:00.782Z B 部分
2022-12-24T15:25:00.782Z A 部分

我有另一个名为 TableA 的表:

日期时间 党派 客户ID
2022-12-24T15:20:00.782Z A 部分 客户A
2022-12-24T15:20:00.782Z B 部分 客户-B
2022-12-24T15:20:00.782Z B 部分 客户-C
2022-12-24T15:20:00.782Z A 部分 客户-D
2022-12-24T15:21:00.782Z D 部分 客户-E
2022-12-24T15:21:00.782Z A 部分 客户-F
2022-12-24T15:21:00.782Z B 部分 客户-G
2022-12-24T15:21:00.782Z B 部分 客户-H
2022-12-24T15:22:00.782Z B 部分 客户-I
2022-12-24T15:22:00.782Z E 部分 客户-J
2022-12-24T15:22:00.782Z F 部分 客户-K
2022-12-24T15:22:00.782Z D 部分 客户-L
2022-12-24T15:22:00.782Z A 部分 客户-M
2022-12-24T15:23:00.782Z B 部分 客户-N
2022-12-24T15:23:00.782Z C 部分 客户-O
2022-12-24T15:23:00.782Z A 部分 客户-P
2022-12-24T15:23:00.782Z B 部分 客户Q
2022-12-24T15:23:00.782Z E 部分 客户-R

我正在编写一个查询,我想根据表 B 中的 Partid 和日期时间排除表 A 中存在的数据。例如: 我想从表 A 中获取 CustomerID 列表,仅基于那些仅位于 TableB 中 DateTime 2022-12-24T15:20:00.782Z 和 2022-12-22T15:22:00.782Z 之间的 Part-A 和 PartB Partid。 因此,在上述情况下,TableA 所需的输出应该是

日期时间 党派 客户ID
2022-12-24T15:21:00.782Z D 部分 客户-E
2022-12-24T15:22:00.782Z E 部分 客户-J
2022-12-24T15:22:00.782Z F 部分 客户-K
2022-12-24T15:22:00.782Z D 部分 客户-L
2022-12-24T15:23:00.782Z B 部分 客户-N
2022-12-24T15:23:00.782Z C 部分 客户-O
2022-12-24T15:23:00.782Z A 部分 客户-P
2022-12-24T15:23:00.782Z B 部分 客户Q
2022-12-24T15:23:00.782Z E 部分 客户-R

如有任何帮助,我们将不胜感激。

sql correlated-subquery in-subquery
1个回答
0
投票

使用 TableCTE AS ( 选择不同的 a.*,b.Partid 作为 'BId' 来自#TableA 左连接 #TableB b ON a.Partid = b.Partid AND a.Datetime=b.Datetime )

从 TableCTE 中选择 *,其中 Bid 为 NULL

© www.soinside.com 2019 - 2024. All rights reserved.