You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL:如何按唯一CustNo分配仅为1和2的序号列IdNo

解决方案

直接把你生成的rn列重命名为IdNo就行,因为你已经用row_number()按CustNo分区、FoodDate降序生成了1和2的序号,刚好匹配需求。

修改后的完整查询语句:

with row as
(select z.*,
        row_number ()
            over (partition by CustNo
                  order by FoodDate desc)    rn
   from table z)
  select rn as IdNo,
         CustNo,
         Food,
         FoodDate   
    from row
   where rn <= 2
order by CustNo, FoodDate desc

补充说明

  • 要是遇到同一CustNo下多条记录FoodDate完全相同的情况,row_number()可能会随机给它们分配1和2。如果想要序号分配更稳定,可在排序条件里再加个字段(比如Food),确保排序逻辑唯一:
row_number ()
    over (partition by CustNo
          order by FoodDate desc, Food)    rn

内容的提问来源于stack exchange,提问作者BFF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 01:09:27