我正在将当前的Microsoft Access进程转移到SQL SERVER 2016,并且重写Access SQL查询时遇到了问题。当前访问查询在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访问函数在很大程度上与statement语句的工作方式相同,但我的问题是,当在SQL SERVER?中的计算中的语句中有一个语句时,处理嵌套大小写的最佳方法是什么?
下面是我试图将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当问题出现时,我已经检查了另一个嵌套案例,但是,我还没有看到一个嵌套案例的例子,即在计算中的语句。
如有任何建议,将不胜感激。
发布于 2017-04-17 22:50:06
在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_Indexhttps://stackoverflow.com/questions/43460753
复制相似问题