我有一个表table1
,它有一些列,必须根据某些条件计算并移动到另一个表table2
中。为了符合条件,我创建了一个临时表#ttemp
,并将临时表更改为创建两个新变量var1
和var2
,以根据不同的列设置一些值,并稍后检查这些条件。如果条件通过,我做一些聚合,然后我会插入table2
将有聚合列。从SQL Server 2016中的temp中将IF语句插入到表中
首先,从table1
创建#temp
表和变量。
SELECT *
INTO #ttemp
FROM table1
alter table #ttemp add var1 int
alter table #ttemp add var2 int
update #ttemp set var1 = -1
update #ttemp set var1 = 1
where error <> 0 and var1 = -1
update #ttemp var2 = -1
接着,var1
柱和var2
列从#temp
表(var1 = 0
和var2 = -1
)值的值和计算的cus_request
,cus_stay
平均,并把它们在一个新的临时表#ttemp2
。
IF var2 = -1 and var1 = 0
BEGIN
select y.id, y.avg(cus_request) as r_avg, y.avg(cust_stay) as s_avg
INTO #ttemp2
FROM #ttemp as y
UPDATE l
SET l.cus_request_avg = t.r_avg, l.cust_stay_avg = t.s_avg
FROM table2 as l
inner join #ttemp2 as t
t.id = l.id
END
我的问题是,我的IF语句不能正常工作,如果我只是运行select
语句和update
声明它工作正常,但更新语句之后,我得到0 rows affected
因为条件不符合。我正在使用update
而不是insert
声明。如何将记录插入table2
?
任何帮助将不胜感激。
您的BEGIN在哪里? –
你可以发布完整的查询吗?我没有真正了解你的IF如何适应。如果你想比较一个值,而不是一列。你可以通过WHERE子句来实现你在那里完成的任务。 – Leonidas199x
@ Leonidas199x我正在比较那些'var1'和'var2'列的值。我是SQL Server的新手。你的意思是我可以在'where'子句中设置'var1'和'var2'的值比较吗? –