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

Откуда: Kiev, Ukraine
Сообщений: 10
Доброе время суток.

Есть такая таблица [table]:
id counter multiply
1 20 1
2 12 4
3 1 10

Запрос вида
SELECT counter, counter * multiply AS total, total * 100 AS percent FROM [table]

вызывает ошибку Invalid column name 'total'.

Вопрос, как в T-SQL MS SQL2000 использовать уже обработанные данные не повторяя вычислений?

Zubr.
7 апр 03, 16:04    [166777]     Ответить | Цитировать Сообщить модератору
 Re: Использование алиасов полей в дальнейших вычислениях.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SELECT

Q.Counter,
Q.total,
Q.total * 100 as [percent]
FROM
(SELECT
counter,
counter * multiply AS total
FROM
[TABLE]) AS Q
7 апр 03, 16:08    [166784]     Ответить | Цитировать Сообщить модератору
 Re: Использование алиасов полей в дальнейших вычислениях.  [new]
Eugene Zubritsky
Member

Откуда: Kiev, Ukraine
Сообщений: 10
Спасибо, как вариант. :-)

Но... если я использую сложный запрос с использованием 5 таблиц и вычислением полей с использованием данных из нескольких таблиц одновременно. Что больше скажется на производительности? Повтороное вычисление или подзапросы?


Zubr.
7 апр 03, 16:15    [166799]     Ответить | Цитировать Сообщить модератору
 Re: Использование алиасов полей в дальнейших вычислениях.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
>Что больше скажется на производительности? Повтороное вычисление или подзапросы

А ты планы выполнения глянь. Разницы быть не должно. Все равно сервак из нашего красивого запроса наверняка построит план выполнения с повторным вычислением. Тока это не подзапрос, а вложенный запрос. Немного разные вещи.
7 апр 03, 16:21    [166812]     Ответить | Цитировать Сообщить модератору
 Re: Использование алиасов полей в дальнейших вычислениях.  [new]
Eugene Zubritsky
Member

Откуда: Kiev, Ukraine
Сообщений: 10
К предыдущему...

Такая конструкция тоже приводит к ошибке так как не определены Deal и DealCap.

...

FROM t_deal AS Deal,
t_dealcap AS DealCap,
(SELECT dbo.f_deal_mm_increment(Deal.roll_deal_id, Deal.roll_seqnum, Deal.generic2, ABS(DealCap.capstart)) AS increment_amount ) AS IA
...
7 апр 03, 16:23    [166817]     Ответить | Цитировать Сообщить модератору
 Re: Использование алиасов полей в дальнейших вычислениях.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
>Такая конструкция тоже приводит к ошибке так как не определены Deal и DealCap.

Ну конечно ошибка. Я ж тебе показал пример вложенного запроса, а ты подзапрос нагородил у которого во FROM действительно нет того, что ты перечислил во FROM главного запроса.
7 апр 03, 16:57    [166869]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить