2012-06-27 145 views
0

我試圖到FoxPro數據庫遷移到SQL Server。我在FoxPro中的CASE語句,其工作原理是這樣..是否有可能有一個CASE語句中多個SELECT語句在SQL

CASE *variable* = 1 
    SELECT * FROM TABLEA INTO CURSOR A 
CASE *variable* = 2 
    SELECT * FROM TABLEB INTO CURSOR B 
CASE *variable* = 3 
    SELECT * FROM TABLEC INTO CURSOR C 

CASE *variable* = N 
    SELECT * FROM TABLEN INTO CURSOR N 

有沒有辦法將此CASE語句轉換爲SQL而不使用IF?我假設在SQL Server CASE中只能在SELECT中寫入。

謝謝。

+0

我想你可以加入像'JOIN表A基於VAR = 1,表B JOIN基於VAR = 2'等所有表我不會建議這樣做(因此是評論而不是答案),但它可能會提供一些啓發。 – corsiKa

+2

在t-sql'case'不適用於流程控制;相反,它用於返回一個單一的值,你將不得不使用IF - 它可能適用於foxpro,但這種方法 - 特別是遊標 - 很少是SQL服務器中最好的方法。 –

+0

爲什麼你不能使用'IF'?就我所知,無法在SQL中使用CASE,因爲結果必須是一個「表達式」,它是一個單值。 –

回答

0

這是你問:

SELECT * FROM IIF(var = 1, 'table1', IIF(var = 2, 'table2', 'table3')) INTO CURSOR IIF(var = 1, 'cur1', IIF(var = 2, 'cur2', 'cur3')) 
相關問題