我有两个表。
1-Identity(id, ref1,ref2, address)
2-details(ref1,ref2,amount,u_no,u_date)
我想提取每个id,其金额总和具有最高u_date和最高u_no
我在下面试过——
Select I.id, d.amount
From identity I Inner Join
(select ref1,ref2,sum(amount) as amount
From details d
where (ref1,ref2,u_no,u_date) In (select ref1, ref2, max(u_no) as u_no, max(u_date) as u_date from details group By ref1,ref2)
Group By ref1,ref2)
) d
On I.ref1 = d.ref1 And I.ref2 = d.ref2;
但是我得到的相同id有多个金额。表详细信息和预期输出
有人可以帮我解决这个问题吗,谢谢
这是你想要的吗?
select d.*
from (select d.*,
row_number() over (partition by ref1, ref2 order by u_date desc, u_no desc) as seqnum
from details d
) d
where seqnum = 1;
所需的结果可以简单地完成如下:
Select id,max(amount) AS amount
From identity
Join ref
using (Ref1,Ref2)
Group by id
如果您在结果中需要更多列,但每个 ID 仍然只有一个列,请更改所需的输入输出以反映这一点,我们可以帮助您,但它很可能涉及 Gordon 向您展示的 row_number(( 技巧