Microsoft SQL Server - условное присвоение переменных - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь сделать что-то подобное в Microsoft SQL Server:

DECLARE @isparent int;

SET @isparent = iif(account.parentid is not null,
                    1,
                    0);

SELECT
    IIF(@isparent = 1,
        parentenrollment,
        enrollment)            "Enrollment"
FROM
    Accounts

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

Возможно ли это? Если да, то как?

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Согласно вашему коду, вам не нужна переменная, я думаю, вы пытаетесь сделать как

SELECT
    IIF(parentid is not null,
        parentenrollment,
        enrollment) Enrollment
FROM
    Accounts

и он такой же, как

SELECT CASE WHEN ParentId IS NOT NULL THEN ParentEnrollment
            ELSE Enrollment
       END Enrollment
FROM Accounts

Если вы действительно хотите проверить, является ли parentid нулевым или нет, и сохранить значение в переменной, то ваш запрос должен вернуть одну (1) строку, что можно сделать двумя способами

  • ТОП и ЗАКАЗ ПО

    SELECT TOP 1 @isparent = IIF(parentid IS NOT NULL, 1, 0)
    FROM Accounts
    ORDER BY <Your Order Here>
    
  • Предложение WHERE с условиями, которые возвращают только 1 строку

    SELECT @isparent = IIF(parentid IS NOT NULL, 1, 0)
    FROM Accounts
    WHERE <Type Your Condition(s) Here>
    
0 голосов
/ 05 мая 2019

Вы можете использовать:

DECLARE @isparent int;

SELECT @isparent = IIF(parentid is not null, parentenrollment, enrollment)
FROM    Accounts
WHERE ... --  condition that returns single row
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...