满足条件返回表A;否则,返回表B

时间:2021-02-27 23:08:02

标签: sql-server

我在 SQL Server 工作。我有 3 个临时表:#t1、#t2 和 #t3。它们在架构上都是相同的。如果满足某些条件,我需要将#t1 设置为#t2;否则,我需要将#t1 设置为#t3。我怎样才能做到这一点?我试过一个 if-else 语句,但它不喜欢第二个 INTO 语句。

IF @a = 1
    SELECT * INTO #t1 FROM #t2
ELSE
    SELECT * INTO #t1 FROM #t3
;

2 个答案:

答案 0 :(得分:2)

这不是一个好的做法,但这应该可以解决错误。

select * into #t1 from (
    select * from #t2 where @a = 1 union all
    select * from #t3 where @a <> 1 or @a is null
) t;

更好的方法是显式创建表并通过 insert 添加行。您还应该评估为什么有必要使用这些相同的表格。

答案 1 :(得分:1)

您可以设置一个带有条件的表名变量,然后使用EXEC函数将表名作为变量使用。像这样:

DECLARE @tb NVARCHAR(3)

IF (@a = 1) SET @tb = '#t2'
ELSE SET @tb = '#t3'

EXEC('SELECT * INTO #t1 FROM ' + @tb)
相关问题