我有一个棘手的 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 |
如有任何帮助,我们将不胜感激。
使用 TableCTE AS ( 选择不同的 a.*,b.Partid 作为 'BId' 来自#TableA 左连接 #TableB b ON a.Partid = b.Partid AND a.Datetime=b.Datetime )
从 TableCTE 中选择 *,其中 Bid 为 NULL