嵌套情况当时或否则子句中的计算中的语句



我正在将当前的Microsoft访问过程传输到SQL Server 2016,并且在重写访问SQL查询之一时遇到了问题。当前访问查询在集合函数中具有以下代码

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访问函数的工作原理与SQL情况相同,但是我的问题是,当the tht squl 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

我在问题时审查了其他嵌套情况,但是当计算中的语句中,我还没有看到嵌套情况的示例。

任何提示都将不胜感激

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

最新更新