SQL:按A列分组,取B组最大,B组相等的取C组最大。

原语句:

select cinvcode A,ddate B,dnmaketime C from rdrecords10 a 

            inner join rdrecord10 b on a.ID=b.ID 

查询结果:

blob.png

要求:按A列分组,取B组最大,B组相等的取C组最大。

希望结果:

blob.png

13736712550 发布于 2020-6-23 10:34
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
axingLv6专家互助
发布于2020-6-23 10:40
select A,B,C from(
select cinvcode A,ddate B,dnmaketime C,
row_number() over(partition by cinvcode order by ddate desc,dnmaketime desc) as rn
from rdrecords10 a 
inner join rdrecord10 b on a.ID=b.ID
) t where rn=1


最佳回答
0
TheShyLv4初级互助
发布于2020-6-23 11:36(编辑于 2020-6-23 11:40)

另一种写法:

WITH MO AS (
select cinvcode A,ddate B,dnmaketime C 
from rdrecords10 a 
inner join rdrecord10 b on a.ID=b.ID )

SELECT  * FROM MO H
WHERE 1=1
AND NOT EXISTS(SELECT 1 FROM MO Y WHERE H.A = Y.A AND (H.B<Y.B OR H.C<Y.C))

翻译下意思就是:

NOT EXISTS 不存在 B列比B列小,C列与C列小的值;

就是取两列的最大值;

  • 3关注人数
  • 476浏览人数
  • 最后回答于:2020-6-23 11:40
    请选择关闭问题的原因
    确定 取消
    返回顶部