У меня есть две таблицы, главная (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'