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

如何在Oracle中按日期/账户/客户生成组内序号?

解决Oracle组内序号生成问题

问题分析

你遇到的核心问题是误用了ROW_NUMBER()的语法——仅指定排序条件却未添加**分区(PARTITION BY)**子句,导致生成全局连续序号而非组内独立序号。

正确SQL语句

要按date、account、client分组生成组内序号,需在ROW_NUMBER()中通过PARTITION BY定义分组维度,同时用ORDER BY指定组内排序逻辑(以下按Balance升序,匹配你的预期结果):

SELECT 
    date,
    account,
    client,
    Balance,
    ROW_NUMBER() OVER (PARTITION BY date, account, client ORDER BY Balance) AS "Order"
FROM 
    your_table_name;

关键语法说明

  • PARTITION BY date, account, client:将数据集按这三个字段拆分为独立分组,每个分组内单独计算序号
  • ORDER BY Balance:指定组内的排序依据,确保序号按Balance从小到大依次生成
  • "Order"是Oracle关键字,作为列名时需用双引号包裹

执行结果验证

运行上述SQL后,将得到你预期的输出:

dateaccountclientBalanceOrder
01-Mar-231111
01-Mar-231122
01-Mar-232111
01-Mar-232231
01-Mar-232242
01-Mar-232253
01-Mar-233131

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:45:15