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
相关产品推荐
相关产品推荐

