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

如何在SQL查询中返回多列并将指定列转为Yes/No值

修改后的SQL查询语句
SELECT 
    a.Customer_Type,
    b.ID_Country,
    b.ID_Type,
    CASE 
        WHEN b.ID_Number IS NOT NULL THEN 'Yes'
        ELSE 'No'
    END AS Has_ID_Number,
    COUNT(*)
FROM table a
INNER JOIN table b 
    ON a.Table_A_Customer_Number = b.Table_B_Customer_Number
GROUP BY 
    a.Customer_Type,
    b.ID_Country,
    b.ID_Type,
    CASE 
        WHEN b.ID_Number IS NOT NULL THEN 'Yes'
        ELSE 'No'
    END
关键改动说明
  • 把旧的隐式连接语法改成INNER JOIN显式写法,逻辑更清晰,符合现代SQL规范。
  • 用CASE WHEN直接判断b.ID_Number是否有值:非空返回Yes,空值返回No,并给列起别名Has_ID_Number(可按需修改)。
  • 分组条件同步替换为这个CASE表达式,确保分组逻辑和查询结果列对应——现在是按「是否存在ID号」分组,而非具体ID号值。
关于CASE WHEN EXISTS的说明

你提到的EXISTS在这里没必要用,它更适合判断是否存在满足条件的子查询记录(比如判断某客户是否有任意一条ID记录)。而你的场景是对每条关联后的记录,直接判断当前行ID_Number是否有值,用简单的CASE WHEN就足够简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:47:33