2012-09-19 163 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