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

Spotfire:基于SOURCE层级按UWI-FORM组筛选单条记录

原始数据表格

UWIFORMSOURCEMD
123BRAIDEDDRR100
123BRAIDEDERK150
123BRAIDEDKPB200
123TUSCHERDRR300
123TUSCHERMDB350
123TUSCHERKPB375
456BRAIDEDDRR150
456BRAIDEDKPB275
456TUSCHERBTM500
456TUSCHERDRR550
456TUSCHERERK525

解决方案方向

核心思路是给每个SOURCE手动分配优先级权重,结合窗口函数按UWI+FORM分组,取优先级最高的记录,既解决指定排名问题,新增SOURCE时只需补充权重规则即可,不会打乱现有层级。

方法1:CASE赋值优先级 + ROW_NUMBER()窗口函数

适配大多数SQL数据库(MySQL、SQL Server、PostgreSQL等):

WITH ranked_data AS (
    SELECT 
        UWI,
        FORM,
        SOURCE,
        MD,
        -- 按既定层级给SOURCE赋值,数字越小优先级越高
        ROW_NUMBER() OVER (
            PARTITION BY UWI, FORM 
            ORDER BY CASE SOURCE
                WHEN 'ERK' THEN 1
                WHEN 'MDB' THEN 2
                WHEN 'DRR' THEN 3
                WHEN 'KPB' THEN 4
                WHEN 'BTM' THEN 5
                -- 新增SOURCE时,在这里添加对应的优先级数字即可
                ELSE 6 -- 未定义的SOURCE优先级最低
            END ASC
        ) AS rank_num
    FROM your_table_name
)
SELECT UWI, FORM, SOURCE, MD
FROM ranked_data
WHERE rank_num = 1;
  • 逻辑说明:
    1. CASE语句完全按照你指定的层级给SOURCE匹配优先级数字,不受字母排序影响;
    2. PARTITION BY UWI, FORM实现按这两个字段分组;
    3. ROW_NUMBER()给每组内的记录按优先级排序,rank_num=1就是每组里优先级最高的那条;
    4. 新增SOURCE时,只需在CASE分支里补充新规则,不会干扰原有层级。

方法2:临时优先级表关联查询(更易维护)

如果SOURCE层级后续可能频繁调整,可单独建配置表,避免修改主SQL:

  1. 创建并初始化优先级表(一次性操作):
CREATE TABLE source_priority (
    SOURCE VARCHAR(10) PRIMARY KEY,
    priority INT NOT NULL
);

INSERT INTO source_priority (SOURCE, priority)
VALUES 
    ('ERK', 1),
    ('MDB', 2),
    ('DRR', 3),
    ('KPB', 4),
    ('BTM', 5);
  1. 主查询逻辑:
WITH ranked_data AS (
    SELECT 
        t.UWI,
        t.FORM,
        t.SOURCE,
        t.MD,
        ROW_NUMBER() OVER (
            PARTITION BY t.UWI, t.FORM 
            ORDER BY COALESCE(sp.priority, 999) ASC
        ) AS rank_num
    FROM your_table_name t
    LEFT JOIN source_priority sp ON t.SOURCE = sp.SOURCE
)
SELECT UWI, FORM, SOURCE, MD
FROM ranked_data
WHERE rank_num = 1;
  • 优势:后续调整层级或新增SOURCE时,只需修改source_priority表的数据,无需改动主查询,维护性更强。

预期结果表格

UWIFORMSOURCEMD
123BRAIDEDERK150
123TUSCHERMDB350
456BRAIDEDDRR150
456TUSCHERERK525

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:55:13