我希望您能帮助我创建一个获取结果的脚本,并在必要时更新表中的字段。
在我的应用程序中,我有创建请求(表请求)的人员(表人员)。当一个人在过去3年内创建了一个请求时,该人处于活动状态。我已经在表Person中创建了一个字段(active-默认值:1),以便知道该人是否仍然处于活动状态。
我创建一个查询,用于检索每个人的请求数(请求总数、活动请求、非活动请求):
-- PERSONS List with number of request for each person and RE_ACTIVE field
SELECT p.id,
p.lastname || ' ' || p.firstname personname,
p.company,
p.active,
(SELECT count(*)
FROM request req
WHERE req.personid = p.id) total_request_nb,
(SELECT count(*)
FROM request reqact
WHERE reqact.personid = p.id
AND reqact.requestdate > add_months(trunc(sysdate, 'YYYY'), -36)) nb_active_requests,
(SELECT count(*)
FROM request reqinact
WHERE reqinact.personid = p.id
AND reqinact.requestdate < add_months(trunc(sysdate, 'YYYY'), -36)) nb_inactive_requests,
CASE
WHEN EXISTS (SELECT *
FROM request reqreact
WHERE reqreact.personid = p.id
AND reqreact.requestdate > add_months(trunc(sysdate, 'YYYY'), -36))
THEN 1
ELSE 0
END re_active
FROM person p;
这个脚本正在运行。我想在人员处于活动状态时(使用上一个结果)更新“活动”字段。例如:
UPDATE PERSON p SET ACTIVE =
CASE WHEN (
(SELECT count(*)
FROM request reqreact
WHERE reqreact.personid = p.id
AND reqreact.requestdate > add_months(trunc(sysdate, 'YYYY'), -36)) > 0
)
THEN 1
ELSE 0
END
我想知道在同一个脚本中是否可以这样做?因此,我可以知道有多少更新已经完成,失败,…在一次查询中。
事先谢谢你的帮助