SQL Server: один и тот же вызов функции в части CASE и ELSE - PullRequest
0 голосов
/ 03 апреля 2019

Ниже приведен мой оператор CASE, который использует тот же вызов функции в CASE и ELSE части.

SELECT
    CASE dbo.MyFunction(T.Id)
        WHEN 'Some Value' THEN 'Got Some Value'
        WHEN 'Other Value' THEN 'Got Other Value'
        ELSE dbo.MyFunction(T.Id)
    END
FROM SomeTable T

Есть ли способ сохранить значение, возвращаемое при первом вызове функции, в части CASE, чтобы позднее можно было использовать это значение в части ELSE?

На самом деле моя функция содержит несколько операторов SELECT, и я не хочу выполнять эти операторы дважды.

1 Ответ

0 голосов
/ 03 апреля 2019

SELECT CASE id
        WHEN 'Some Value' THEN 'Got Some Value'
        WHEN 'Other Value' THEN 'Got Other Value'
        ELSE id
    END
FROM
(
    SELECT dbo.MyFunction(T.Id) AS id
    FROM SomeTable T
) AS t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...