我在下面有一个奇怪的要求,以显示应用程序的当前状态和以前的状态,我的要求在图片中
我试图使用SQL分别获取每个应用程序的最高价值和其余价值,但是我不确定将它们组合的最佳方法。但是,我敢肯定,有更简单的方法可以做到这一点。
将我的查询粘贴到此处。
查询1为我提供了每个应用程序的最新状态:
select application_id, last_updated, application_state
from BELL_APPLICATION_EVENTS where (application_id, last_updated) in (
select application_id, max(last_updated) as last_updated
from BELL_APPLICATION_EVENTS
group by application_id
) order by last_updated desc ;
下面的查询提供了其余状态的数据集,例如“应用程序已完成”和“用户电子邮件已发送”,如图所示。
select *
from BELL_APPLICATION_EVENTS U1
where last_updated < (
select max(last_updated)
from BELL_APPLICATION_EVENTS where application_id = U1.application_id)
order by U1.LAST_UPDATED desc ;
您能否帮助提供一个更简单的选项,以每个应用程序ID在单个记录中获取当前状态和先前状态?
LAG分析功能非常适合此功能。请使用SQL Fiddle代替图片中的数据来提供测试用例。从文档中:
SELECT last_name, hire_date, salary,
LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal
FROM employees
WHERE job_id = 'PU_CLERK';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句