如何在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
相关产品推荐
相关产品推荐

