Как поместить ORDER BY в оператор PRINT? - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужно просто вернуть только последнюю строку, которую возвращает запрос, поэтому мне нужно поместить его в порядок DES C и ограничить его 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```

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Если я полностью не упустил смысл того, чего вы пытаетесь достичь, разве вы просто не хотите это сделать?

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 'не сработало, потому что вы не имеете дело с набором данных, вам нечего "упорядочить" - у вас есть некоторые переменные и вы выполняете некоторые вычисления в них oop до тех пор, пока не будет выполнено определенное условие - вы хотел узнать, каково значение @evensum, когда l oop завершил свою последнюю итерацию. Поэтому все, что вам нужно было сделать, это дождаться, пока код выпадет из l oop, и вывести значение.

1 голос
/ 15 апреля 2020

Вы можете просто напечатать сразу после l oop:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...