Мне нужна ваша помощь в создании моего скрипта для обновления поля в моей таблице.
В моем приложении есть люди (таблица PERSON), которые создают REQUESTS (таблица REQUEST).
Человек активен, когда он создал запрос в течение последних 3 лет.
Я создал поле (ACTIVE - значение по умолчанию: 1) в таблице PERSON, чтобы узнать, активен ли этот человек.
Я создаю запрос для получения количества запросов для каждого человека (активный запрос, неактивный запрос):
select p.ID, p.LASTNAME || ' ' || p.FIRSTNAME personName,p.COMPANY, p.ACTIVE,
(SELECT COUNT(*) FROM request req WHERE req.PERSONID = p.ID) AS "NB_REQUEST",
(SELECT COUNT(*) FROM request reqAct WHERE reqAct.PERSONID = p.ID and reqAct.requestdate > ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -36)) AS "NB_ACTIVE_REQUESTS",
(SELECT COUNT(*) FROM request reqInact WHERE reqInact.PERSONID = p.ID and reqInact.requestdate < ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -36)) AS "NB_INACTIVE_REQUESTS"
from person p
Этот скрипт работает. Теперь я хотел бы реализовать скрипт для обновления поля ACTIVE, когда человек активен. Я впервые попытался реализовать оператор IF, но он не работает.
select p.ID, p.LASTNAME || ' ' || p.FIRSTNAME personName,p.COMPANY, p.ACTIVE,
(SELECT COUNT(*) FROM request req WHERE req.PERSONID = p.ID) AS "NB_REQUEST",
(SELECT COUNT(*) FROM request reqAct WHERE reqAct.PERSONID = p.ID and reqAct.requestdate > ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -36)) AS "NB_ACTIVE_REQUESTS",
(SELECT COUNT(*) FROM request reqInact WHERE reqInact.PERSONID = p.ID and reqInact.requestdate < ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -36)) AS "NB_INACTIVE_REQUESTS"
(IF((SELECT COUNT(*) FROM request reqReAct WHERE reqAct.PERSONID = p.ID and reqReAct.requestdate > ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -36))) > 0 THEN 1 ELSE 0) AS "RE-ACTIVE"
from person p
Не могли бы вы помочь мне сделать это?
Спасибо за вашу помощь