Sql server 2008 SQL中的CASE语句中是否可能有多个Select语句

Sql server 2008 SQL中的CASE语句中是否可能有多个Select语句,sql-server-2008,foxpro,Sql Server 2008,Foxpro,我正在尝试将Foxpro DB迁移到SQL Server。。我在Foxpro中有一个案例陈述,其工作原理如下 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 有没有一种方法可以不使用IF将

我正在尝试将Foxpro DB迁移到SQL Server。。我在Foxpro中有一个案例陈述,其工作原理如下

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

有没有一种方法可以不使用IF将这个CASE语句转换为SQL?我假设在SQL Server中,只能在SELECT中写入


谢谢..

这就是你要问的问题:

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

我想你可以连接所有的表,比如
在var=1上连接tablea,在var=2上连接tableb等。我不建议这样做(因此是一个注释而不是一个答案),但这可能会提供一些启示。在t-sql
案例中
不是用于控制流;相反,它用于返回单个值,您将不得不使用IF(可能适用于foxpro),但这种方法(尤其是游标)很少是SQL Server中执行操作的最佳方法。为什么不能使用
IF
?据我所知,在SQL中没有使用CASE的方法,因为结果必须是一个
表达式,它是一个单一的值。。但我想知道是否有一种方法可以绕过这个案例来满足这一要求
SELECT * FROM IIF(var = 1, 'table1', IIF(var = 2, 'table2', 'table3')) INTO CURSOR IIF(var = 1, 'cur1', IIF(var = 2, 'cur2', 'cur3'))