组中的 SQL-max 并使用复合键求和



我有两个表。

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(( 技巧

最新更新