首页 > 解决方案 > 在 Redshift SQL 中使用 ID 和日期范围删除事务

问题描述

我想在 redshift 中创建一个查询,该查询将根据其有效日期(表 B)删除交易项目(表 A)

让我们称它为表 A 和表 B

表 A 包含项目的所有交易

表 A

 Item_Code      Date

 1. I0001      2019-12-01 
 2. I0002      2019-12-02 
 3. I0001      2020-01-01 
 4. I0003      2020-01-01

则表 2 包含项目有效日期

表 B

Item_Code      Valid_From        Valid_To

 1. I0001      2019-01-01         2019-12-31
 2. I0002      2019-01-01         2019-12-31
 3. I0003      2019-01-01         2019-12-31

我的预期输出将是

Item_Code 日期

 1. I0001         2019-12-01
 2. I0002         2019-12-02

标签: sqlamazon-redshift

解决方案


我将连接两个表并将有效性作为连接条件插入。这将删除所有无效项目,或者您可以反转有效条件以检测哪些项目无效

SELECT A.ITEM_CODE,A.DATE
FROM Table a
INNER JOIN TABLE B 
ON A.ITEM_CODE=B.ITEM_CODE AND A.DATE=> B.Valid_from AND A.date <= B.Valid_to

推荐阅读