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

SQL查询需求:如何实现列值不同返回'n/a'、相同返回单值

SQL修改方案

要实现“列值存在差异时显示'n/a',值全同时显示唯一值”的需求,你可以通过聚合函数结合条件判断来实现,修改后的SQL如下:

SELECT
    CASE WHEN COUNT(DISTINCT e1.i_code) > 1 THEN 'n/a' ELSE MAX(e1.i_code) END AS apple,
    CASE WHEN COUNT(DISTINCT e2.i_code) > 1 THEN 'n/a' ELSE MAX(e2.i_code) END AS banana,
    CASE WHEN COUNT(DISTINCT e3.i_code) > 1 THEN 'n/a' ELSE MAX(e3.i_code) END AS grape
FROM table_d d 
JOIN table_e e1 ON d.x_code = e1.g_code 
JOIN table_e e2 ON d.y_code = e2.g_code 
JOIN table_e e3 ON d.z_code = e3.g_code 
WHERE d.a_code = '12345';

核心逻辑说明:

  • COUNT(DISTINCT 列名):统计该列去重后的取值数量,以此判断是否存在不同值
  • CASE条件判断:如果去重后的数量大于1,说明列中有不同值,返回'n/a';否则用MAX()(或MIN(),因为所有值一致)获取该列的唯一值
  • 移除原查询的GROUP BY子句:原分组会将不同的列值组合拆分成多行,而我们需要将所有符合条件的行聚合为一行,统一判断各列的取值情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:55:18