2012-06-27 141 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')) 
相关问题