【问题标题】:SQL-max in the group and sum with compound key组中的 SQL-max 并使用复合键求和
【发布时间】:2018-03-22 00:53:52
【问题描述】:

我有两张桌子..

1-Identity(id, ref1,ref2, address)
2-details(ref1,ref2,amount,u_no,u_date)

我想提取具有最高 u_date 和最高 u_no 的金额总和的每个 id

我在下面尝试过--

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。 Table details and expected output

有人可以帮我解决这个问题吗?谢谢

【问题讨论】:

  • 你尝试过什么?
  • 更新了查询
  • 样本数据和期望的结果作为问题中的文本表真的很有帮助。

标签: sql netezza


【解决方案1】:

这是你想要的吗?

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;

【讨论】:

  • 我已经在描述中附加了预期的输出图像..你能拍一下吗。我对 sum(amount) 字段有点困惑..非常感谢
【解决方案2】:

想要的结果可以这么简单地完成:

Select id,max(amount) AS amount
From identity
Join ref
using (Ref1,Ref2)
Group by id 

如果您在结果中需要更多列,但每个 id 仍然只有一个,请更改所需的输入输出以反映这一点,我们可以提供帮助,但它很可能涉及 Gordon 向您展示的 row_number() 技巧

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 2013-06-26
    • 2015-12-13
    • 2021-12-27
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多