Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложный запрос, subquery 
:(
    Опции темы
uranpro
Дата 10.11.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



Код

SELECT     SUM(M.ExportPrice *
                          (SELECT     TOP 1 EX.ExchangeRate
                            FROM          dbo.T_Exchange as EX
                            WHERE      (EX.ID_Currency = M.ExpCurrency)) * T.Quantity) AS SP, SUM(T.Quantity) AS SQ, OG.GName
FROM         BMDB.dbo.ObjGroup AS OG INNER JOIN
                      BMDB.dbo.Objs AS O ON OG.ID = O.GID INNER JOIN
                      dbo.T_Headers AS H INNER JOIN
                      dbo.T_Transactions AS T ON H.ID = T.ID_Headers INNER JOIN
                      dbo.T_PLU AS PLU ON T.ID_PLU = PLU.ID ON O.TID = H.ID_Objects INNER JOIN
                      dbo.T_Models AS M ON PLU.ID_Models = M.ID
WHERE     (H.TDate < '2008-11-04') AND (H.ID_Objects = 48) AND (H.ID_Moves IN (6, 4, 3, 5, 2)) AND (H.Status IN (1, 2))
GROUP BY OG.GName

ругаецо!!! почему ? (на subquery)


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Itsys
Дата 11.11.2008, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 1
Всего: 34



Что ругается? Какая ошибка?
PM MAIL WWW Skype   Вверх
uranpro
Дата 11.11.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



cannot perform an aggegate function on an expression containing an aggregate or a subquery


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
2p0i
Дата 14.11.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 14.9.2007

Репутация: нет
Всего: 1



Цитата(uranpro @ 11.11.2008,  11:49)
cannot perform an aggegate function on an expression containing an aggregate or a subquery

Он же написал в чем проблема: нельзя использовать подзапрос в агрегирующей функции. Можно попробовать через outer apply:
Код

SELECT     SUM(M.ExportPrice * XXX * T.Quantity) AS SP, SUM(T.Quantity) AS SQ, OG.GName
FROM         BMDB.dbo.ObjGroup AS OG INNER JOIN
                      BMDB.dbo.Objs AS O ON OG.ID = O.GID INNER JOIN
                      dbo.T_Headers AS H INNER JOIN
                      dbo.T_Transactions AS T ON H.ID = T.ID_Headers INNER JOIN
                      dbo.T_PLU AS PLU ON T.ID_PLU = PLU.ID ON O.TID = H.ID_Objects INNER JOIN
                      dbo.T_Models AS M ON PLU.ID_Models = M.ID OUTER APPLY
                      (SELECT     TOP 1 EX.ExchangeRate AS XXX
                            FROM          dbo.T_Exchange as EX
                            WHERE      (EX.ID_Currency = M.ExpCurrency)) t
WHERE     (H.TDate < '2008-11-04') AND (H.ID_Objects = 48) AND (H.ID_Moves IN (6, 4, 3, 5, 2)) AND (H.Status IN (1, 2))
GROUP BY OG.GName

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0878 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.