将Excel中的循环引用转换为SQL

时间:2017-07-17 16:00:17

标签: sql sql-server

所以如果我让我们说下面的Excel公式,其中A到I代表列。

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语句进行翻译,其结果需要重复使用,然后AGAIN那些第二次结果需要重用,就像在小例子。但是,必须有比创建#temp表更好的方法吗?

1 个答案:

答案 0 :(得分: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