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

Откуда: Харьков
Сообщений: 6
Есть запрос (просто для того что бы задать вопрос):

    Select Table1.ID,
               Table1.Summa,
               Table1.Table2ID,
               (Select sum(Table2.Kol*Table2.Price) from Table2 wherte Table2.ID=Table1.Table2ID) as VerifySum
       From Table1
     Where Table1.Summa<>VerifySum


Ошибка:
Недопустимое имя столбца "VerifySum".
В Sybase я могу юзать именованные столбцы как угодно а в MS SQL как то никак.

Подскажите пути решения именно работы с именованными полями, без переписывания запросов через join, select from (select...) или MS SQL так не умеет?
Заранее спасибо за ответы
29 фев 16, 13:51    [18877200]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
dbimapb,

Имя VerifySum появляется в SELECTе.
А SELECT выполняется ПОСЛЕ WHERE
29 фев 16, 13:52    [18877213]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
Glory
Member

Откуда:
Сообщений: 104751
dbimapb
Подскажите пути решения именно работы с именованными полями, без переписывания запросов через join, select from (select...) или MS SQL так не умеет?

без переписывания не умеет
29 фев 16, 13:53    [18877216]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
dbimapb
Member

Откуда: Харьков
Сообщений: 6
понял спасибо...
29 фев 16, 13:53    [18877221]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Если коротко - не умеет.
Если длинно и правильно - умеет если почитать про синтаксис:

SELECT
     t1.id
   , t1.Summa
   , t1.Table2ID
   , t2.VerifySum
FROM Table1 t1
LEFT JOIN (
    SELECT id, VerifySum = SUM(Kol * Price)
    FROM Table2
    GROUP BY id
) t2 ON t1.id = t2.id
WHERE t1.Summa <> ISNULL(t2.VerifySum, 0)
29 фев 16, 13:55    [18877234]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
dbimapb,

напишите APPLY во FROMе.
А в WHERE (и в списке SELECTа) ссылайтесь на поля этого APPLY на здоровье.
29 фев 16, 13:56    [18877238]     Ответить | Цитировать Сообщить модератору
 Re: именованные поля в WHERE  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
CTE также поможет.
29 фев 16, 14:05    [18877277]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить