【发布时间】:2026-02-02 02:35:02
【问题描述】:
我有一个 SQL Select 语句,我需要根据条件返回某些值。我每次都需要返回多个值,但我对Case语句的理解是,每个case只能返回一个值。
我目前正在通过使用 UNION 语句来解决这个问题,但这看起来有点麻烦 - 有没有更好的方法来做到这一点?基本上,我有一堆提示,每个提示都有“是”、“否”或“将来”的响应(实际上我有更多的响应,但我将仅使用 3 作为示例以保持简短!) - 我需要为每种响应类型生成一个列,其中 1 作为适当响应的值,而 0 表示所有其他响应。看SQL可能更清楚...
我的(简化的)查询如下所示:
SELECT branch,
promptType,
response,
1 AS 'Yes',
0 AS 'No',
0 AS 'Not Discussed'
FROM prompts
WHERE response = 'Y'
UNION
SELECT branch,
promptType,
response,
0 AS 'Yes',
1 AS 'No',
0 AS 'Not Discussed'
FROM prompts
WHERE response = 'N'
UNION
SELECT branch,
promptType,
response,
0 AS 'Yes',
0 AS 'No',
1 AS 'Not Discussed'
FROM prompts
WHERE response = 'D'
【问题讨论】:
标签: sql sql-server select case