如何在 PRINT 语句中放置 ORDER BY?
How do I put an ORDER BY in a PRINT statement?
我只需要 return 只是查询 return 的最后一行,所以我需要将它按降序排列并将其限制为 1,但是 sql不喜欢 ORDER BY 语句。我将如何编码?
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
ORDER BY @evenSum DESC
END```
您可以在循环后直接打印:
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
除非我完全错过了你想要达到的目标,你不就是想这样做吗?
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
你试图用 'ORDER BY' 做的事情没有用,因为你没有处理数据集,"order" 没有什么可做的 - 你有一些变量而且你在循环中对它们进行一些计算,直到满足特定条件 - 你想知道当循环完成它的最后一次迭代时 @evensum 的值是多少。因此,您需要做的就是等待代码退出循环并打印值。
我只需要 return 只是查询 return 的最后一行,所以我需要将它按降序排列并将其限制为 1,但是 sql不喜欢 ORDER BY 语句。我将如何编码?
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
ORDER BY @evenSum DESC
END```
您可以在循环后直接打印:
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
除非我完全错过了你想要达到的目标,你不就是想这样做吗?
DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
SET @thirdNum = @firstNum + @secondNum
SET @firstNum = @secondNum
SET @secondNum = @thirdNum
IF (@thirdNum % 2) = 0
SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
你试图用 'ORDER BY' 做的事情没有用,因为你没有处理数据集,"order" 没有什么可做的 - 你有一些变量而且你在循环中对它们进行一些计算,直到满足特定条件 - 你想知道当循环完成它的最后一次迭代时 @evensum 的值是多少。因此,您需要做的就是等待代码退出循环并打印值。