Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использовать выходное поле запроса для вычисления другого выходного поля.  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1615
У MS Access в Jet SQL работает вычисление выходного поля от данных других выходных полей:
SELECT 1 AS A , 2 AS B, A+B AS C;

А SQL server и T-SQL выдают ошибки:
MSSMS
Msg 207, Level 16, State 1, Line 1
Недопустимое имя столбца "A".
Msg 207, Level 16, State 1, Line 1
Недопустимое имя столбца "B".

Как это проще обойти ?
13 авг 18, 12:33    [21640197]     Ответить | Цитировать Сообщить модератору
 Re: Использовать выходное поле запроса для вычисления другого выходного поля.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
4d_monster,

проще [1] + [2] as [C]
13 авг 18, 12:36    [21640203]     Ответить | Цитировать Сообщить модератору
 Re: Использовать выходное поле запроса для вычисления другого выходного поля.  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1615
а если не 1 и 2, а сложные вычисления и итог не от двух столбцов в 10-ти ?
13 авг 18, 12:42    [21640213]     Ответить | Цитировать Сообщить модератору
 Re: Использовать выходное поле запроса для вычисления другого выходного поля.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
4d_monster
а если не 1 и 2, а сложные вычисления и итог не от двух столбцов в 10-ти ?

тогда
;WITH T AS (SELECT 1 AS A , 2 AS B)
SELECT *, [A] + [B] AS [C] FROM T
13 авг 18, 12:44    [21640219]     Ответить | Цитировать Сообщить модератору
 Re: Использовать выходное поле запроса для вычисления другого выходного поля.  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
4d_monster
а если не 1 и 2, а сложные вычисления и итог не от двух столбцов в 10-ти ?


Еще вариант с cross apply. ps: лично мне синтаксически больше нравиться.
select *
from dbo.Table1 t
    cross apply (
        -- сложные вычисления тут
        select 1 as A, 2 as B
    ) c1
    cross apply (
        -- можно еще добавить
        select c1.A + c1.B as C
    ) c2
    cross apply (
        -- и еще
        select c2.С / c1.B as D
    ) c3
13 авг 18, 17:34    [21640902]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить