2012-09-19 132 views
0

我需要得到1行与一些值的总和由最大日期。但这两行由不同的人更新,但只需显示最新的人员ID更新。甲骨文查询组

我的查询是:

select v.code, sum(v.a_lines), sum(v.b_lines), 
v.updated_by, f.period, max(v.updated_on) 
from f_values v, f_file f where 
v.file_id = f.id 
and v.code= '100002' 
and 
to_char(f.period,'MM/DD/YYYY') = '03/31/2011' 
group by v.code, v.updated_by, f.period 

这将返回2行:

102 30 100 xxx 31-MAR-11 10-AUG-11 
102 50 200 yyy 31-MAR-11 07-OCT-11 

现在我们需要回到只有1行。事情是这样的:

102 80 3000 yyy 31-Mar-11 07-Oct-11 

我知道,这可以从塔取出“updated_by”来实现,但我需要把它填充,但它仅需要最近updated_by行(“YYY” )。希望我的问题很明确

请让知道这是否可能。在此先感谢

Harish

+0

这个工程:MAX(updated_by)KEEP(DENSE_RANK第一个命令BY UPDATE_ON DESC)!但休眠HQL不起作用:(。任何人请 – Harry

+0

意外的令牌KEEP是错误消息 – Harry

回答

0

得到它通过使用

MAX(updated_by) KEEP (DENSE_RANK FIRST ORDER BY updated_on DESC) 

工作,但此查询不上HQL工作,所以不得不改变对SQL查询。如果任何人都可以在HQL上获得帮助,那就太棒了。

谢谢

0

你说你想要最近updated_by行。这似乎有点太明显,但不会MIN(v.updated_by)和从GROUP BY条款删除v.updated_by做你想要的?

+0

感谢您的回应。我也尝试过。“updated_by”是user_id。因此max或min不能正常工作。我想要最近一个的updated_by id希望我很清楚 – Harry

+0

在上面的例子中,我想要更新的最近updated_on日期的id,所以在这种情况下这将是'yyy' – Harry

+0

得到它的工作通过使用MAX(updated_by)KEEP(DENSE_RANK FIRST ORDER BY updated_on DESC)!:) – Harry