Как получить набор результатов (из дочерней таблицы) на основе условного столбца в главной таблице: SQL - PullRequest
0 голосов
/ 18 июня 2020

У меня есть две таблицы, главная (A) и дочерняя (B). В таблице A у меня есть поле HALFCREDIT, которое содержит либо 1, либо 2. Дочерняя таблица содержит поле DATE TODATE. Теперь, если HALFCREDIT равен 1, тогда я хотел бы получить все дочерние записи до месяца JUNE в поле TODATE, и если HALFCREDIT равен 2, то я хотел бы получить результаты с июня по декабрь.

Таблица A

EMPNO         LEAVEYEAR     HALFCREDITED
24611880910   2016          1               
24611880910   2016          2               

Таблица B

FROMDATE    TODATE      DAYSNO  REASON
2016-10-09  2016-10-15  7       DO
2016-04-01  2016-04-05  5       DO

У меня есть запрос

select h.*, d.FROMDATE, d.TODATE, d.DAYSNO, d.REASON 
from PR_LEAVE_HEADER h
inner join PR_LEAVE_DETAILS d
on h.EMPNO = d.EMPNO and h.LEAVEYEAR = d.LEAVEYEAR
where h.empno = '24611880910'

, и здесь я хочу включить условие в поле HALFCREDITED из таблицы A, чтобы результат выглядел так

EMPNO         LEAVEYEAR     HALFCREDITED    TODATE      DAYSNO   REASON
24611880910   2016          1               2016-04-05  5        DO

PS Edit: я изменил запрос на этот, но получаю NULL:

select h.*, 
case when h.HALFCREDITED = '1' 
then (select x.TODATE from PR_LEAVE_DETAILS where x.EMPNO = h.EMPNO and month(x.TODATE) > 6) end as TODATE,
d.FROMDATE, 
d.DAYSNO, d.REASON 
from PR_LEAVE_HEADER h
inner join PR_LEAVE_DETAILS d
on h.EMPNO = d.EMPNO and h.LEAVEYEAR = d.LEAVEYEAR
where h.empno = '24611880910'
...