Повторное использование поля с псевдонимами в инструкции SQL SELECT
Я хотел бы достичь чего-то подобного:
SELECT
(CASE WHEN ...) AS FieldA,
FieldA + 20 AS FieldB
FROM Tbl
полагаю, что "..."Я заменил длинный и сложный случае заявление Я не хочу повторять при выборе FieldB
и использовать псевдоним FieldA
вместо.
обратите внимание, что это вернет несколько строк, следовательно,DECLARE
/SET
за пределами SELECT
заявление не годится в моем случае.
2 ответов
workaroud будет использовать подзапрос:
SELECT
FieldA,
FieldA + 20 AS FieldB
FROM (
SELECT
(CASE WHEN ...) AS FieldA
FROM Tbl
) t
для улучшения читаемости вы также можете использовать CTE
:
WITH t AS (
SELECT
(CASE WHEN ...) AS FieldA
FROM Tbl
)
SELECT
FieldA,
FieldA + 20 AS FieldB
FROM
t
когда у меня есть сложная логика для вычисления "виртуального" значения столбца из других значений столбцов в таблице, я обычно создаю представление одной таблицы исходной таблицы со всеми исходными столбцами плюс вычисленные значения. Затем я делаю другие выборы против вида. Это позволяет мне:
чтобы назвать мои вычисляемые столбцы.
чтобы сохранить логику для вычислений в одном месте, а не разбросаны по различным запросам в приложение.