我正在将当前的Microsoft Access进程转移到SQL SERVER 2016,我遇到了重写其中一个Access SQL查询的问题。当前的Access查询在set函数
中具有以下代码b.New_AVM_Index = IIf(a.[AVM_Index]>0
,a.[AVM_Index]*(IIf(a.[Stratified_Median_AVM]>0
,IIf(b.[Stratified_Median_AVM]>0
,b.[Stratified_Median_AVM]/a.[Stratified_Median_AVM]
,1),1)),10000)
IIf Access函数与SQL CASE WHEN语句的作用相同,但我的问题是在THEN子句或SQL SERVER中的ELSE子句下的计算中的语句处理嵌套大小写的最佳方法是什么吗
以下是我尝试将New_AVM_Index列添加到表中但未成功:
CASE WHEN (a.[AVM_Index]>0
THEN a.[AVM_Index]* (WHEN(a.[Stratified_Median_AVM]>0
THEN WHEN (b.[Stratified_Median_AVM]>0
THEN b.[Stratified_Median_AVM]/a.[Stratified_Median_AVM]
ELSE 1 END) ELSE 1 END)) ELSE 10000)
END AS New_AVM_Index
我已经回顾了其他嵌套案例的问题,但是在计算中的语句时我还没有看到嵌套案例的例子。
任何提示都将非常感谢
答案 0 :(得分:0)
使用CASE
CASE
SELECT CASE WHEN a.[AVM_Index] > 0
THEN a.[AVM_Index] * (CASE WHEN a.[Stratified_Median_AVM] > 0
THEN (CASE WHEN b.[Stratified_Median_AVM] > 0
THEN b.[Stratified_Median_AVM] / a.[Stratified_Median_AVM]
ELSE 1 END
)
ELSE 1 END)
ELSE 10000
END AS New_AVM_Index