Sql 尝试获取并发(oracle 11g)的最新执行
我试图获取特定并发事件的最新执行情况;我正在连接到Oracle 11g数据库 我的查询工作正常,但由于某些原因,我无法仅获取最新的执行,我指的是请求\u id 这是我的问题: 问题是我得到了几行,我只想要最新的一行,请求id最高 您能帮助我吗?您可以使用行号分析功能和降序请求id假设请求id是主键列作为标识,行之间不会出现重复列值:Sql 尝试获取并发(oracle 11g)的最新执行,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我试图获取特定并发事件的最新执行情况;我正在连接到Oracle 11g数据库 我的查询工作正常,但由于某些原因,我无法仅获取最新的执行,我指的是请求\u id 这是我的问题: 问题是我得到了几行,我只想要最新的一行,请求id最高 您能帮助我吗?您可以使用行号分析功能和降序请求id假设请求id是主键列作为标识,行之间不会出现重复列值: select program, "request id", "start", "end", "request id", time_mm, status, "user
select program, "request id", "start", "end", "request id", time_mm, status, "user",
oracle_process_id, oracle_session_id, argument_text
from
(
select nam.user_concurrent_program_name program,
con.request_id "request id",
to_char(con.actual_start_date,'dd/mm/yyyy hh24:mi') "start",
to_char(con.actual_completion_date,'dd/mm/yyyy hh24:mi') "end",
trunc((con.actual_completion_date-con.actual_start_date)*1440,2) time_mm,
con.status_code status,
us.user_name "user",
con.oracle_process_id,
con.oracle_session_id,
con.argument_text,
row_number() over (order by con.request_id desc) as rn
from fnd_concurrent_programs_tl nam
join fnd_concurrent_requests con
on con.concurrent_program_id=nam.concurrent_program_id
join fnd_user us
on con.requested_by = us.user_id
where con.actual_start_date >= date'2019-11-20'
and con.actual_start_date < date'2019-11-23' + 1
and nam.user_concurrent_program_name like 'report concurrent sales'
)
where rn = 1
如果您想为每个用户\u并发\u程序\u名称分别添加一行,请添加partition by子句,如下所示:
row_number()
over (partition by nam.user_concurrent_program_name order by con.request_id desc) as rn
您好,非常感谢您的回复!。我要检查一下:伙计,它正在工作,但如果我想添加另一行以获得2个或更多concurrents的最新执行,它会显示零行,我的意思是:nam.user\u concurrent\u program\u name像“报告并发销售”和nam.user\u concurrent\u program\u name像“报告并发客户”和nam.user\u concurrent\u program\u name像“报告并发星期日”你明白了吗?@Student\u new通过添加新的当前条件,去掉rn=1,你得到了什么。。?顺便说一句,我想您需要一个OR运算符,而不是类似语句之间的AND,同时不要忘记将它们放在括号内,或者您可以在“report concurrent sales”和“report concurrent customers”中累积as和nam.user\u concurrent\u program\u name,“report concurrent sunday”。如果使用新条件删除语句rn=1,则得到零行。如果我将条件rn=1 using和nam.user\u concurrent\u program\u name放在“report concurrent sales”、“report concurrent customers”和“report concurrent sunday”中,我只得到了一行:/OK,我现在得到了,你想把它们分开@Student\u new。签出最后一次编辑。
where con.actual_start_date >= date'2019-11-20'
and con.actual_start_date < date'2019-11-23' + 1
and ( nam.user_concurrent_program_name in
('report concurrent sales',
'report concurrent customers',
'report concurrent sunday') )
row_number()
over (partition by nam.user_concurrent_program_name order by con.request_id desc) as rn