2017-04-17 183 views
0

我將當前的Microsoft Access過程傳輸到SQL SERVER 2016,並且遇到了重寫其中一個Access SQL查詢的問題。當前訪問查詢有一組功能在THEN或ELSE子句下的計算中嵌套CASE WHEN語句

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) 

國際金融研究所訪問功能的工作原理大致在相同的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

使用CASECASE

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 
+0

感謝你在這裏面!完美的作品 – da4l

+0

@ da4l很高興我能幫上忙。 – BJones