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

Oracle SQL中按自定义规则实现唯一行筛选的可行性问询

Oracle SQL实现指定筛选需求

完全可以用Oracle SQL实现这个筛选需求,借助窗口函数就能轻松达成。

现有数据表TableA

Row_NoCOL1COL2COL3COL4
11234SER1YABC
21234SER2NDEF
33456SER1YXYZ
43456SER2YPQR
55678SER1NQAZ
65678SER2NSRT

期望结果集

Row_NoCOL1COL2COL3COL4
11234SER1YABC
33456SER1YXYZ
55678SER1NQAZ

实现SQL语句

SELECT t.Row_No, t.COL1, t.COL2, t.COL3, t.COL4
FROM (
    SELECT 
        a.*,
        ROW_NUMBER() OVER (
            PARTITION BY a.COL1 
            ORDER BY a.COL3 DESC, a.Row_No ASC
        ) AS rn
    FROM TableA a
) t
WHERE t.rn = 1;

逻辑说明

  • 内层查询使用ROW_NUMBER()窗口函数,按COL1分组(PARTITION BY a.COL1),每组内先按COL3降序排序(确保COL3='Y'的行优先级更高,字符Y的ASCII码大于N,降序后Y排在前面),再按Row_No升序排序(同COL3值时选择行号更小的记录)。
  • 外层查询筛选出每组中行号为1的记录(t.rn = 1),就是每组符合筛选规则的目标行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:30:54