Sql server 2008 SQL中的CASE语句中是否可能有多个Select语句
我正在尝试将Foxpro DB迁移到SQL Server。。我在Foxpro中有一个案例陈述,其工作原理如下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将
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'))