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

SQL Partition Order By无法正确排序Decimal类型数值问题咨询

问题原因

你当前的排序逻辑不符合需求,核心问题出在窗口函数的ORDER BY配置上:

  1. SQL的ORDER BY默认排序规则为升序(ASC),你没有给lastmodifieddate指定降序规则,系统会优先把更早的记录排在前面。哪怕你肉眼看到的日期展示值完全一致,数据库底层存储的时间戳通常包含毫秒级精度,更早的小数值时间会优先排序,直接导致同日期下高资产额的记录被挤到后排。
  2. 你的需求是「优先最新日期、再最高数值」双维度降序,但你仅给资产字段加了DESC标记,日期维度的排序方向完全和需求相反。

修复方案

调整窗口函数的排序规则,给lastmodifieddate也加上降序标记即可,修改后的SQL如下:

SELECT contact__c,
       Ind_Assets_Retail__c,
       lastmodifieddate,
       ROW_NUMBER() OVER(PARTITION BY contact__c
                         ORDER BY lastmodifieddate DESC, ind_assets_retail__c DESC) as row_num
FROM contact_financial__c

如果修改后资产字段排序仍然异常,可以在排序时显式做类型转换,避免字段存储类型隐性转换导致的排序错误:

SELECT contact__c,
       Ind_Assets_Retail__c,
       lastmodifieddate,
       ROW_NUMBER() OVER(PARTITION BY contact__c
                         ORDER BY lastmodifieddate DESC, CAST(ind_assets_retail__c AS DECIMAL(18,2)) DESC) as row_num
FROM contact_financial__c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:36:00