tID
является первичным ключом tab1.Поэтому, когда вы говорите, что ищете tab1
записей, tID
которых находится в наборе tab1
записей со статусом E, вы можете просто сказать: я ищу tab1
записей сстатус E.
Что делает ваш запрос: Показать все tab1
записей с их окончательным tab2
предоставленным статусом ...
-
tab1
pmt не равно NULL ине '{}' tab1
статус E - конечный
tab2
статус X или Z - окончательный
tab2
статус должен быть сегодня илив будущем - существует как минимум одна запись
tab2
, которая должна быть сделана за последние три дня для записи tab1
Запрос:
SELECT
t1.tID,
t1.sor_acct_id,
t1.pmt,
t2.status
FROM ct.tab1 t1
join
(
SELECT
tID,
status,
ROW_NUMBER() OVER (PARTITION BY tID ORDER BY dueDate DESC) AS rn
FROM ct.tab2
WHERE dueDate > CURRENT_DATE - 1
) t2 ON t2.tID = tab1.tID AND t2.rn = 1 AND t2.status IN ('X', 'Z')
WHERE t1.status = 'E'
AND t1.pmt IS NOT NULL
AND t1.pmt <> '{}'
and t1.tID IN
(
SELECT tID
FROM ct.tab2
WHERE dueDate > CURRENT_DATE - 4
AND dueDate < CURRENT_DATE
);