我需要根据几个条件更改 select 语句中的返回值。我试过这样的事情:
,CASE i.DocValue
WHEN 'F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
ELSE 0
END as Value
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用以及推荐的方法是什么?接下来会有几个 WHEN 条件。
谢谢
Mar*_*son 36
,CASE WHEN i.DocValue ='F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
ELSE 0
END as Value
Run Code Online (Sandbox Code Playgroud)
有两种类型的CASE语句,SIMPLE和SEARCHED。
您不能在 Simple case 表达式中计算多个表达式,而这正是您试图执行的操作。
-- Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
-- Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Run Code Online (Sandbox Code Playgroud)
简单案例示例:
CASE x
WHEN 'a' THEN 'b'
WHEN 'c' THEN 'd'
ELSE 'z'
END
Run Code Online (Sandbox Code Playgroud)
搜索案例的示例:
CASE
WHEN x = 1 AND y = 2 THEN 'a'
WHEN x = 2 AND y = 1 THEN 'b'
ELSE 'z'
END
Run Code Online (Sandbox Code Playgroud)
进一步阅读:http : //msdn.microsoft.com/en-us/library/ms181765.aspx
小智 5
如果你有多个需求,你也可以这样写:
CASE WHEN CITY='HYDERABAD' THEN
CASE WHEN AREA='BHILL' THEN PIN='12345'
WHEN AREA='DSNR' THEN PIN='67890'
ELSE '33333'
END
END AS PIN_COD
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
352869 次 |
| 最近记录: |