Повторное использование значения подзапроса в предложении Else - PullRequest
0 голосов
/ 28 апреля 2020

есть ли способ использовать значение X в предложении if в предложении else

if @bid_value>(SELECT  MAX(bid_value) AS X FROM dbo.auctionDetails WHERE status = 0 AND vehicle_id=@vid GROUP BY vehicle_id)
            BEGIN
                //some code      
            END 
ELSE IF X=NULL
        BEGIN
        //some code
        END

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Почему бы вам не создать переменную для значения?

DECLARE @maxValue INT

SELECT @maxValue = MAX(bid_value) 
FROM dbo.auctionDetails 
WHERE status = 0 AND vehicle_id = @vid 

IF (@bid_value > @maxValue)
BEGIN
    // some code
END
ELSE IF (@maxValue IS NULL)
BEGIN
    // some code
END 

Комментарий о том, как вы получаете значение MAX: поскольку вы фильтруете по vehicle_id = @vid, вам не нужно Предложение GROUP BY, поскольку вы получите результаты только для одного значения vahicle_id

2 голосов
/ 28 апреля 2020

Ваш запрос должен быть следующим:

    DECLARE @X INT
        SET @X = (SELECT  MAX(bid_value) AS X FROM dbo.auctionDetails WHERE status = 0 AND vehicle_id=@vid);
   IF @bid_value>@MAX   
     BEGIN
            //some code      
      END 
        ELSE IF X=NULL
      BEGIN
            //some code
       END
2 голосов
/ 28 апреля 2020

Обычно вы присваиваете результаты запроса переменной.

Если вы работаете SQL Сервер:

DECLARE @max_bid_value INT;

SELECT @max_bid_value = MAX(bid_value)
FROM dbo.auctionDetails 
WHERE status = 0 AND vehicle_id = @vid;

IF @bid_value > @max_bid_value
BEGIN
    //some code      
END 
...

Обратите внимание, что я удалил предложение GROUP BY из исходный запрос - я думаю, это проясняет, что он всегда должен возвращать скалярное значение.

Обратите внимание, что если вы хотите проверить, является ли переменная null, вам нужно @bid is null вместо @bid = null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...