2017-07-17 16 views
-1

因此,如果我讓我們說下面的Excel公式,其中A代表列。將Excel中的循環引用轉換爲SQL

A B C D E F G      H          
1 2 3 4 5 6 =IF(A=1;"Yes";"No") =IF(G = "Yes"; "Absolutely Yes"; "No") 

I 
=IF(H = "Absolutely Yes"; "Definitely Yes!"; "No") 

現在我正在用SQL Server中的多個#temp表進行翻譯。所以

SELECT A,B,C,D,E,F,G, 
     IIF(A=1, 'Yes','No') AS CONCLUSION_1 
INTO #TEMP_1 
FROM TABLE 

SELECT A,B,C,D,E,F,G, CONCLUSION_1, 
     IIF(CONCLUSION_1 = 'Yes', 'Absolutely Yes', 'No') AS CONCLUSION_2 
INTO #TEMP_2 
FROM #TEMP_1 

SELECT A,B,C,D,E,F,G, CONCLUSION_1, 
     IIF(CONCLUSION_2 = 'Absolutely Yes', 'Definitely Yes', 'No') AS FINAL_CONCLUSION 
INTO FINAL_TABLE 
FROM #TEMP_2 

這只是一個簡單的例子,但Excel公式包含嵌套IF語句我與IIF或CASE語句翻譯,這些都需要重複使用的結果,然後再與第二次的結果需要就像在小例子中那樣被重用。但是,必須有比創建#temp表更好的方法?

+0

那些不是循環引用。如果A = 1,則將Conclusion_1設置爲是,另外兩個設置爲「絕對是」。我認爲這並不容易,因此您可能錯過了某些內容? – JeffUK

回答

2

爲什麼不同時做所有的事情?它們不是遞歸的或以任何方式循環:

SELECT A,B,C,D,E,F,G, 
     IIF(A=1, 'Yes','No') AS CONCLUSION_1, 
     IIF(A=1, 'Absolutely Yes', 'No') AS CONCLUSION_2, 
     IIF(A=1, 'Definitely Yes', 'No') AS FINAL_CONCLUSION 
FROM TABLE 
+0

這只是爲了演示一個例子。我明白它可以像這樣解決,但公式是非常複雜的,依靠彼此解決.. – PRIME

+0

然後請編輯您的示例,以便它代表您正在嘗試解決的問題。榮譽是一個簡單的例子,但它不應該如此簡單,以至於不能真正展現問題! – JeffUK

+0

對不起,我想我會用一個簡單的例子更清晰。但我現在已經使用了#temp函數,並感謝您的幫助,我非常感謝! :) – PRIME