Oracle 更新表分析结果,用于获取结果并同时更新表列的Oracle脚本

我希望您能帮助我创建一个获取结果的脚本,并在必要时更新表中的字段。

在我的应用程序中,我有创建请求(表请求)的人员(表人员)。当一个人在过去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

我想知道在同一个脚本中是否可以这样做?因此,我可以知道有多少更新已经完成,失败,…在一次查询中。

事先谢谢你的帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值