Удалить транзакцию, используя ID и диапазон дат в Redshift SQL - PullRequest
0 голосов
/ 10 января 2020

Я хочу создать запрос в красном смещении, который удалит элементы транзакции (таблица A) на основе его срока действия (таблица B)

Позволяет называть его таблицей 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 Date

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

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Я бы присоединился к обеим таблицам и вставил валидность как условие соединения. Это удалит все недействительные элементы или вы можете отменить условие действительности, чтобы определить, какие элементы являются недействительными

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
0 голосов
/ 10 января 2020

Это даст ожидаемые результаты

Select * from TableA a where not exists(select 1 from TableB b on a.Date between b.Valid_From        
 and Valid_To)

И как только вы убедитесь, что это то, что вы хотите, вы удалите его с помощью

delete from TableA a where not exists(select 1 from TableB b on a.Date between b.Valid_From        
 and Valid_To)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...