Дополнительно
Лучший способ сделать вложенные случае логический оператор в SQL сервере
Я'м пишу SQL-запрос, где в несколько столбцов, возвращаемых должны быть рассчитаны в зависимости от довольно большого количества болезней.
Я'м, используя вложенные операторы case, но его становится грязным. Есть ли лучше (более организованным и/или читаемым) способом?
(Я с помощью Microsoft SQL сервер 2005)
Упрощенный пример:
SELECT
col1,
col2,
col3,
CASE
WHEN condition
THEN
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation1
ELSE calculation2
END
ELSE
CASE
WHEN condition2
THEN calculation3
ELSE calculation4
END
END
ELSE
CASE
WHEN condition1
THEN
CASE
WHEN condition2
THEN calculation5
ELSE calculation6
END
ELSE
CASE
WHEN condition2
THEN calculation7
ELSE calculation8
END
END
END AS 'calculatedcol1',
col4,
col5 -- etc
FROM table
169
9
Вы могли бы попробовать какой-то сливаются трюк, например:
в <предварительно> ВЫБЕРИТЕ КОАЛЕСЦИРУЮТ( Случае когда условие1 calculation1 еще null конец, Случае когда условие2 calculation2 еще null конец, и т. д... ) </пред>
Обернуть все эти случаи в один.
Вы можете объединить несколько условий, чтобы избежать ситуации:
Я лично делаю это таким образом, сохраняя встроенных выражений ограничены. Я'd также поместить комментарии, чтобы объяснить, что происходит. Если это слишком сложный, разбейте его на функции.
Здесь'ы простое решение вложенные "в комплексе„ дело заявление: --Вложенные Случае Сложного Выражения
Просто убедитесь, что у вас оператор end для каждого оператора case
пользовательская функция может хороший сервер, по крайней мере, чтобы скрыть логику - ЭСП. если вам нужно сделать это в более чем один запрос
Мы можем объединить несколько условий, чтобы снизить накладные расходы.
Пусть есть три переменные а, б, на который мы хотим проанализировать случаи. Мы можем сделать это, как показано ниже:
Я прошла через это и нашли все ответы супер круто, однако хочет дополнить ответ дал @deejers
вы можете сделать еще дополнительно его не обязательно, это очень полезно во многих сценариях.
Этот пример может помочь вам, картина показывает, как SQL случае заявление будет выглядеть, когда есть если и больше, чем один внутренний, если петли