【发布时间】:2018-03-30 13:41:52
【问题描述】:
我有一个表 table1 有一些列,必须根据某些条件计算并移动到另一个表 table2。为了满足这些条件,我创建了一个临时表 #ttemp 并将临时表更改为创建两个新变量 var1 和 var2 以根据不同的列设置一些值,然后检查这些条件。如果条件通过,我会进行一些聚合,然后我会插入到 table2 中,这将具有聚合列。
首先,从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
接下来,#temp 表(var1 = 0 和 var2 = -1)中 var1 列和 var2 列的值并计算 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 是如何适应的。使用 IF 您想要比较一个值,而不是列。你在那里所做的可以通过我想象的 WHERE 子句来实现。
-
@Leonidas199x 我正在比较来自
var1和var2列的值。我是 SQL Server 的新手。你的意思是我可以在where子句中设置var1和var2的值比较? -
你的伪代码太模糊了,很难弄清楚你想在这里完成什么。
-
@SeanLange 好的,让我编辑帖子。是否可以执行 IF 语句并插入记录?抱歉,我正在尝试理解 SQL 的 IF ELSE 逻辑!
标签: sql sql-server if-statement aggregation insert-update