T-SQL:必须声明标量变量 - while 循环中的错误



很抱歉进行了许多更改,现在完整的代码产生了错误,我认为它来自所有"其中ID = @currID"语句,但我不知道如何改进。也感谢任何其他改进代码的建议,因为我是初学者,非常感谢!

DECLARE @currID bigint
SET @currID = (SELECT MIN(ID) FROM dbo.test1);
WHILE (@currID <= (SELECT MAX(ID) FROM dbo.test1))
BEGIN
IF EXISTS (SELECT * FROM dbo.test2 
WHERE A = (SELECT A FROM dbo.test1 WHERE ID = @currID) 
AND B = (SELECT B FROM dbo.test1 WHERE ID = @currID))
UPDATE dbo.test2
SET Count = Count + (SELECT Count FROM dbo.test1 WHERE ID = @currID)
WHERE A = (SELECT A FROM dbo.test1 WHERE ID = @currID) 
AND B = (SELECT B FROM dbo.test1 WHERE ID = @currID);
SET @currID = @currID + 1
ELSE
INSERT INTO dbo.test2 (A, B)
SELECT *
FROM dbo.test1 WHERE ID = @currID;
SET @currID = @currID + 1
END

问题解决:问题是模拟号,它象征着一个新块,其中旧的局部变量不再可用,并且在每个"if"和"else"之后需要有"开始"和"结束">

您需要包装子查询。批次

DECLARE @currID bigint
SET @currID = (SELECT MIN(ID) FROM dbo.Eventlogs_Aggregated_byTime1)
WHILE (@currID < (SELECT MAX(ID) FROM dbo.Eventlogs_Aggregated_byTime1) + 1)

最新更新