Как использовать вычисляемый столбец другим вычисляемым столбцом

У меня есть вопрос в Sqlite, который включает сложное вычисление колонки, скажем:

SELECT 1+1 AS a;

Я хочу выбрать это вычисление как , но я также должен использовать его в качестве компонента другого вычисления:

SELECT 1+1 AS a, a+2 AS b;

К сожалению, это производит ошибку:

Error: no such column: a

Я знаю, что мог просто повторить вычисление снова для b :

SELECT 1+1 AS a, 1+1+2 AS b;

Но принятие 1+1 является некоторой сложной и дорогой операцией, есть ли какой-либо способ, которым я могу сослаться на него позже в , ИЗБРАННЫЙ , не имея необходимость повторно вычислять его?

1
nl ja de

3 ответы

Необходимо использовать подвопрос.

SELECT c.d AS a, c.d + 2 AS b
FROM
  (SELECT 1+1 AS d) c

Результат

| a | b |
---------
| 2 | 4 |
1
добавлено
Первая линия должна прочитать ИЗБРАННЫЙ a.a КАК A, a.a + 2 КАК B?
добавлено автор twoleggedhorse, источник
Спасибо @twoleggedhorse, пропущенное та часть.
добавлено автор Kermit, источник
@ypercube, который я согласовываю, благодарит указать на это.
добавлено автор Kermit, источник
Имя таблицы @Mercurial какой?
добавлено автор Kermit, источник
@njk: Хороший, но тот же самый псевдоним для таблицы и колонки? Ай.
добавлено автор ypercubeᵀᴹ, источник
Где точно имя таблицы определяется?
добавлено автор Mercurial, источник

В дополнение ко всем хорошим примерам другими - это работает в Oracle:

SELECT a, a+2 b From
(
 SELECT 1+1 a From dual
)
/

Output:

A | B
-----
2 | 4
0
добавлено
Спасибо. К сожалению , двойной isn' t поддержанный Sqlite.
добавлено автор dgel, источник

Посмотрите, можно ли сделать это что-то вроде этого (использование подвопроса для стола)

Select t.a+2 as b
    FROM (Select 1+1 as a from xyz) t 
0
добавлено
OP хочет иметь возвратился также.
добавлено автор Kermit, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)