SQL ROW_NUMBER()over( partition by)

我们下面的例子以取 97号订单和133号订单里的数量最多的一行显示为例:

首先我们正常查询97号订单和133号订单如下图语句和截图所示:

select

ROW_NUMBER()over( order by DocEntry) as ID

, DocEntry as '订单号'

,LineNum+1 as 行号

,Quantity as 数量

from [POR1]  where DocEntry in (97,133)

结果如下:

上面的结果ID是按DocEntry排序,现在我们增加partition进行按单号进行单号内ID标识,并且按照数量进行降序,这样得出结果ID为1的就是我们要的结果如下语句和截图

select

ROW_NUMBER()over(partition by DocEntry order by Quantity desc) as ID

,DocEntry as '订单号'

,LineNum+1 as 行号

,Quantity as 数量

from [POR1] 
where DocEntry in (97,133)

结果如下

 

 最终我们再筛选ID为1的行即可得出97和133号订单里数量最多的行

select 订单号,行号,数量

from (
select ROW_NUMBER()over(partition by DocEntry order by Quantity desc) as ID,DocEntry as '订单号',LineNum+1 as 行号,Quantity as 数量 from [POR1] 
where DocEntry in (97,133)

)AA where ID=1

结果如下:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值