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

Поиск:

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


Опытный
**


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

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



почему MS SQL 2000 ругается на этот запрос
Код

declare @Date varchar(40);
declare @Obj int;

select @Date='2008-08-22', @Obj= 18 ;

SELECT 
h.ID, h.TDate, h.DocNumber, h.Comments, SUM(t.RetailPrice * t.Quantity) AS Summ,
(

select Sum
    (
    (

    select TOP 1 RetailPrice
        from 
        T_Headers as H2 INNER JOIN
        T_Transactions as t2 ON h2.ID = t2.ID_Headers
            where 
            (t2.RetailPrice>0) and (h2.TDate<@Date) and (t2.ID_PLU = t1.ID_PLU) 

    )
    ) -- Показывает на это место !!!!
    from 
    t_headers as H1 inner join
    T_Transactions as t1 on h1.id = t1.id_headers
        where 
        h1.id = h.id;

) as OldSum
    FROM 
    T_Headers as h INNER JOIN
    T_Transactions as t ON h.ID = t.ID_Headers
        WHERE
        (h.ID_Moves = 7) AND (h.ID_Objects = @Obj) and
        (h.TDate BETWEEN CONVERT(DATETIME, 
         @Date+' 00:00:00', 102) AND CONVERT(DATETIME, @Date+' 23:59:59', 102))
            GROUP BY 
            h.ID, h.DocNumber, h.TDate, h.Comments


сообщение:
Msg 130, Level 15, State 1, Line 23
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.


в чем дело ?? подскажите плс))) !!! оч надо


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


Опытный
**


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

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



понял где ошибка, не могу ее исправить(( почему нельзя так писать
Код

declare @HeID int;
declare @Date datetime;

select @HeID = 1115212 , @Date = '2008-08-21' , @MSum = 0;


select Sum
    ((

    select TOP 1 RetailPrice
        from
        T_Headers as H2 INNER JOIN
        T_Transactions as t2 ON h2.ID = t2.ID_Headers
            where
            (t2.RetailPrice>0) and (h2.TDate<@Date) and (t2.ID_PLU = t1.ID_PLU)

    )) as Summ
    from
    t_headers as H1 inner join
    T_Transactions as t1 on h1.id = t1.id_headers
        where
        id = @HeID;


а так можно
Код

declare @HeID int;
declare @Date datetime;

declare @MSum money;

select @HeID = 1115212 , @Date = '2008-08-21' , @MSum = 0;


select @MSum = @MSum +
    (

    select TOP 1 RetailPrice
        from 
        T_Headers as H2 INNER JOIN
        T_Transactions as t2 ON h2.ID = t2.ID_Headers
            where 
            (t2.RetailPrice>0) and (h2.TDate<@Date) and (t2.ID_PLU = t1.ID_PLU)

    )
    from 
    t_headers as H1 inner join
    T_Transactions as t1 on h1.id = t1.id_headers
        where 
        id = @HeID;

select @MSum as SumM ;


как бы это все нормально сделать


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


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.4.2006
Где: В подвале шоколад ной фабрики.

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



У тебя написано внизу (где можно):
Код

SELECT @MSum = @MSum +
-- бла-бла


А вверху (где ругает):
Код

SELECT Sum
(
  -- тут отдельная операция
)


То есть ты пытаешься совместить Sum и результат операции, а никакого оператора между ними нет.
Может в этом проблема?
(Я не особо опытный в SQL. Только предполагаю и это первое, что пришло в голову.)

Это сообщение отредактировал(а) DigitalDummy - 5.10.2008, 16:53
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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