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

如何调整CASE语句查询以输出符合预期的多行FLAG结果?

问题分析

原查询里的CASE语句是行级判断,每一行数据只会触发一个CASE分支——只要FLAG_1-FLAG_3全为'X',就直接返回'PRE',不会再检查FLAG_4-FLAG_6的条件;再加上DISTINCT去重,自然只会返回一条结果。要让同一个NUMBER同时输出PRE和POST两条记录,得把两个条件拆成独立的查询再合并。

调整后的SQL写法
SELECT NUMBER, 'PRE' AS FLAG
FROM TABLE
WHERE FLAG_1='X' AND FLAG_2='X' AND FLAG_3='X'

UNION ALL

SELECT NUMBER, 'POST' AS FLAG
FROM TABLE
WHERE FLAG_4='X' AND FLAG_5='X' AND FLAG_6='X'
补充说明
  • 用UNION ALL而非UNION:UNION会自动去重,而如果同一个NUMBER同时满足两个条件,我们需要保留两条记录,UNION ALL不会去重,执行效率也更高。
  • 如果需要同时输出不满足任何条件的'NA'记录,可以追加第三个分支:
SELECT NUMBER, 'PRE' AS FLAG
FROM TABLE
WHERE FLAG_1='X' AND FLAG_2='X' AND FLAG_3='X'

UNION ALL

SELECT NUMBER, 'POST' AS FLAG
FROM TABLE
WHERE FLAG_4='X' AND FLAG_5='X' AND FLAG_6='X'

UNION ALL

SELECT NUMBER, 'NA' AS FLAG
FROM TABLE
WHERE NOT (FLAG_1='X' AND FLAG_2='X' AND FLAG_3='X')
  AND NOT (FLAG_4='X' AND FLAG_5='X' AND FLAG_6='X')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:22:32