Sql 使用While循环从表中计算值?
我有一个下表,我需要循环记录并向变量添加值Sql 使用While循环从表中计算值?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个下表,我需要循环记录并向变量添加值 Declare @Variable1 INT SET @Variable1=0 Declare @totalval INT SET @totalval=0 While (@Variable1<=20) BEGIN SET @totalval=@totalval+(Select Salary from EmpTable Where EmpID=9) PRINT @totalval SET @Variable1= Variable1+1 END
Declare @Variable1 INT
SET @Variable1=0
Declare @totalval INT
SET @totalval=0
While (@Variable1<=20)
BEGIN
SET @totalval=@totalval+(Select Salary from EmpTable Where EmpID=9)
PRINT @totalval
SET @Variable1= Variable1+1
END
GO
我无法打印值…我正在使用SQL server 2005
谢谢大家问题在于这一行:
SET @Variable1= Variable1+1
这不起作用,请将其更改为:
SET @Variable1= @Variable1+1
如果您要离开它,您应该会遇到以下错误:
问题在于这一行:
SET @Variable1= Variable1+1
这不起作用,请将其更改为:
SET @Variable1= @Variable1+1
如果您要离开它,您应该会遇到以下错误:
您可以使用此选项:
;WITH a AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) num
, *
FROM EmpTable
WHERE EmpID = 9
)
SELECT @totalval = SUM(Salary)
, @Variable1 = COUNT(*)
FROM a
WHERE num <= 20
这将是执行此类任务的常用方法之一,它比循环更有效。“按选择0排序”上的“行号”为记录提供序号,但不更改排序。您可以使用此选项:
;WITH a AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) num
, *
FROM EmpTable
WHERE EmpID = 9
)
SELECT @totalval = SUM(Salary)
, @Variable1 = COUNT(*)
FROM a
WHERE num <= 20
这将是执行此类任务的常用方法之一,它比循环更有效。按选择0排序的行编号为记录提供序号,但不更改排序。这也适用于您的要求:
这也符合您的要求:
你为什么要循环,不能使用SUM吗?不,我不能使用SUM..这是一项要求SET语句中似乎有错误。你在while中缺少@for variable1look@Kyle,你能解释一下你为什么有这个要求吗?@praveen,你是对的,看看我的答案。我也遇到了一个错误。你为什么要循环,你不能使用SUM吗?不,我不能使用SUM。这是一个要求SET语句中似乎有一个错误。你在while中缺少@for variable1look@Kyle,你能解释一下你为什么有这个要求吗?@praveen,你是对的,看看我的答案。我也犯了个错误。@Kyle,好的。把它换到我给你的第二行,打印就行了。下一次,请包括你得到的任何错误。问题只是说我不能打印值。这让人们相信打印声明有问题,而事实并非如此。@Kyle,好吧。把它换到我给你的第二行,打印就行了。下一次,请包括你得到的任何错误。问题只是说我不能打印值。这让人们相信打印语句有问题,而实际上并没有。