2016-01-06 6 views
4

Как использовать псевдоним столбца где-то еще в одном запросе? Возможно ли это в Oracle?Использовать псевдоним столбца в одном и том же элементе

Пример использования EMP_ID:

SELECT 
    t1.DATE, t2.NAME, t1.ID, 
    TO_NUMBER(SUBSTR(t1.NUMBER_ID, - 6) 
     || TRIM(TO_CHAR(SUBSTR(EMP_ID, 3, 2), '00')), '999999999999') AS CONTRACT, 
    t2.ADDRESS, 
    CASE WHEN SUBSTR(t2.COD_EMP, 0, 2) != 'PG' THEN 'PG00' 
     || t2.COD_EMP ELSE t2.COD_EMP END AS EMP_ID 
FROM 
    TABLE_01 t1 
    INNER JOIN TABLE_02 t2 ..... 
+3

Нет, вы не можете, если у вас нет подзапроса с псевдонимом column – HoneyBadger

+0

Вы можете использовать его в разделе 'order by' точно. –

+0

Возможный дубликат [Использование псевдонима в части определения случая в Oracle SQL] (http://stackoverflow.com/q/17591707/266304) (и многие другие) –

ответ

3

Если вы проверить documentation, вы увидите, что вам разрешено только использовать его в order by пункте:

Укажите псевдоним для выражения столбца , Oracle Database будет использовать этот псевдоним в заголовке столбца набора результатов. Ключевое слово AS - необязательно. Псевдоним эффективно переименовывает элемент списка выбора для длительности запроса . Псевдоним может использоваться в order_by_clause , но не другие предложения в запросе.

4

Per стандартного SQL: Все столбцы в любом конкретном SELECT пункте будут посчитаны «как будто» они все время вычисляться параллельно (чтобы некоторые реализации, чтобы сделать именно это).

Таким образом, вы не можете зависеть от другого столбца, определенного в том же предложении SELECT, так как его значение еще не было вычислено.

Смежные вопросы