MS SQL Server 2008R2 管理工作室
我在两个表上运行 SELECT
。我会将其简化为遇到问题的部分。我需要将 SELECT
结果修改为特定格式以进行数据导入。我的 CASE
语句工作正常,直到我需要将 WHEN ... THEN...
基于不同的表列
TABLE1
-----------------
name | tag | code
-----------------------
name1 | N | 100
name2 | N | 100
name3 | N | 200
name4 | Y | 100
name5 | N | 400
name6 | N | 700
CODES
-------------------------
code | desc
-------------------------
100 | string1
200 | string2
300 | string2
400 | string2
700 | string2
SELECT name,
Case CODES.desc
when 'string1' then 'String 1'
when 'string2' then 'String 2'
when 'string3' then 'String 3'
when 'string4' then 'String 4'
END as description
FROM TABLE1
join CODES on TABLE1.code = CODES.code
这很好用。问题是如果 TABLE1.tag = Y
,则描述需要是 'Other string'
,它不在 CODES
表中
我尝试添加:
Case CODES.desc
.....
when TABLE1.tag = Y then CODES.desc 'Other String'
但是没用。
最佳答案
您可以使用稍微更健壮的 case
语法并将案例表示为条件,而不仅仅是可能的值:
SELECT name,
CASE WHEN table1.tag = 'Y' THEN 'other string'
WHEN codes.[desc] = 'string1' THEN 'String 1'
WHEN codes.[desc] = 'string2' THEN 'String 2'
WHEN codes.[desc] = 'string3' THEN 'String 3'
WHEN codes.[desc] = 'string4' THEN 'String 4'
END AS description
FROM table1
JOIN codes ON table1.code = codes.code
https://stackoverflow.com/questions/33742036/