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

Oracle SQL如何按KUNNR分组获取排除空值空格的最短SORTL值

实现方案

可以使用Oracle的FIRST_VALUE开窗函数实现需求,核心逻辑是先过滤掉SORTL列的无效值,再按KUNNR分组取每组内长度最短的有效SORTL值,映射到分组内所有行。

可直接使用的SQL语句

SELECT 
    BUKRS,
    KUNNR,
    SORTL,
    FIRST_VALUE(
        CASE WHEN TRIM(SORTL) IS NOT NULL AND TRIM(SORTL) != ' ' THEN SORTL END 
        IGNORE NULLS
    ) OVER (
        PARTITION BY KUNNR 
        ORDER BY LENGTH(TRIM(SORTL)) ASC
    ) AS SORTL_FINAL
FROM 你的业务表名称;

逻辑说明

  • 先用CASE表达式将无效的SORTL值(Null、全空格字符串)转换为Null
  • FIRST_VALUE函数的IGNORE NULLS参数会忽略所有Null值,仅从有效SORTL中取值
  • PARTITION BY KUNNR指定按KUNNR字段分组计算
  • ORDER BY LENGTH(TRIM(SORTL)) ASC将同组内的有效SORTL按长度从小到大排序,取排在第一位的就是长度最短的有效值
  • 如果存在多个相同最短长度的有效SORTL,可在ORDER BY后追加排序规则,例如追加SORTL ASC就会取字典序最小的有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:54:05