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

如何使用SELECT查询新增列并从多列中选取指定优先级值?

按优先级从多列中选取结果的SQL实现

要实现按N > CR > C > CC的优先级从Outcome1、Outcome2、Outcome3、Outcome4四列中选取值并生成新列,可以使用CASE WHEN语句,这是所有主流SQL数据库都支持的通用写法:

SELECT
    Outcome1,
    Outcome2,
    Outcome3,
    Outcome4,
    -- 按优先级选取结果的新列
    CASE
        -- 优先匹配N,只要任意一列是N就返回N
        WHEN Outcome1 = 'N' OR Outcome2 = 'N' OR Outcome3 = 'N' OR Outcome4 = 'N' THEN 'N'
        -- 没有N时匹配CR
        WHEN Outcome1 = 'CR' OR Outcome2 = 'CR' OR Outcome3 = 'CR' OR Outcome4 = 'CR' THEN 'CR'
        -- 没有CR时匹配C
        WHEN Outcome1 = 'C' OR Outcome2 = 'C' OR Outcome3 = 'C' OR Outcome4 = 'C' THEN 'C'
        -- 最后匹配CC
        WHEN Outcome1 = 'CC' OR Outcome2 = 'CC' OR Outcome3 = 'CC' OR Outcome4 = 'CC' THEN 'CC'
        -- 如果所有列都为空,返回NULL(可根据需求调整)
        ELSE NULL
    END AS DESIRED_OUTCOME
FROM your_table_name;

逻辑说明

  • 按优先级顺序判断:先检查四列中是否存在N,存在则直接返回N
  • 若没有N,检查是否存在CR,存在则返回CR
  • 若没有CR,检查是否存在C,存在则返回C
  • 最后检查是否存在CC,存在则返回CC
  • 若所有列都为空或没有匹配值,返回NULL(可根据实际需求修改为默认值)

示例验证

对照给出的示例数据,比如第三行Outcome3为N,其他列无更高优先级值,返回N;第九行Outcome1为CR,其他列是CC,返回CR,完全符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:20