У меня есть две таблицы, headers
и lines
.Мне нужно извлечь batch_submission_date
из таблицы заголовков, но иногда запрос для batch_id
возвращает null
для batch_submission_date, но также возвращает parent_batch_id, и если мы запросим THAT parent_batch_id как batch_id, то тогдаверните правильную дату batch_submission_date.
например,
SELECT t1.batch_id,
t1.parent_batch_id,
t2.batch_submission_date
FROM db.headers t1, db.lines t2
WHERE t1.batch_id = '12345';
output = 12345, 99999, null
Затем мы используем этот родительский batch_id в качестве batch_id:
SELECT t1.batch_id,
t1.parent_batch_id,
t2.batch_submission_date
FROM db.headers t1, db.lines t2
WHERE t1.batch_id = '99999';
and we get output = 99999,99999,'2018-01-01'
Поэтому я пытаюсь написать запрос, который сделает это для меня - каждый раз, когда batch_submission_date для batch_id имеет значение null, мы находим родительский batch_id этого batch_id и запрашиваем его вместо этого.
Это была моя идея - но япросто вернуть null как для bp_batch_submission_date
, так и для new_submission_date
.
SELECT
t1.parent_id as parent_id,
t1.BATCH_ID as bp_batch_id,
t2.BATCH_LINE_NUMBER as bp_batch_li,
t1.BATCH_SUBMISSION_DATE as bp_batch_submission_date,
CASE
WHEN t1.BATCH_SUBMISSION_DATE is null
THEN
(SELECT a.BATCH_SUBMISSION_DATE
FROM
db.headers a,
db.lines b
WHERE
a.SD_BATCH_HEADERS_SKEY = b.SD_BATCH_HEADERS_SKEY
and a.parent_batch_id = bp_batch_id
and b.batch_line_number = bp_batch_li
) END as new_submission_date
FROM
db.headers t1,
db.lines t2
WHERE
t1.SD_BATCH_HEADERS_SKEY = t2.SD_BATCH_HEADERS_SKEY
and (t1.BATCH_ID = '12345' or t1.PARENT_BATCH_ID = '12345')
and t2.BATCH_LINE_NUMBER = '1'
GROUP BY
t2.BATCH_CLAIM_LINE_STATUS_DESC,
t1.PARENT_BATCH_ID,
t1.BATCH_ID,
t2.BATCH_LINE_NUMBER,
t1.BATCH_SUBMISSION_DATE;
Возможно ли то, что я пытаюсь сделать?используя переменные bp_batch_id
и bp_batch_li