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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с процедурой 
V
    Опции темы
4ybaka
Дата 17.10.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нужно написать процедуру,кот по указанному году выводит для каждого из продавцов самый дорогой заказ.всего выводится n(параметр) продавцов.рез-т сортируется по убыванию цены.еще нужно вывести номер заказа,что и вызвало проблему...у меня получилась такая вот процедура:
Код

GO
alter proc GreatestOrders
        @Year int,
        @Count int
AS
    select top (@Count)
        E.LastName + ' ' + E.FirstName as Seller,
        max(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as Cost
    from Employees E,Orders O,"Order Details" OD
    where O.EmployeeID=E.EmployeeID and O.OrderID=OD.OrderID and datepart(year,O.OrderDate)=@Year
    group by E.LastName + ' ' + E.FirstName
    order by max(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) desc

но вот просто вывести O.OrderID нельзя,нужна группировка по этому полю,но если сгруппировать,то появятся ненужные записи(для продавца нельзя выводить более одного заказа)


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
Lunatikus
Дата 18.10.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну,думаю,так:
Код

GO
alter proc GreatestOrders
        @Year int,
        @Count int
AS
SELECT t1.seller,t1.cost,t2.orderID FROM
    (select top (@Count)
        E.LastName + ' ' + E.FirstName as Seller,
        max(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as Cost,
    from Employees E,Orders O,"Order Details" OD
    where O.EmployeeID=E.EmployeeID and O.OrderID=OD.OrderID and datepart(year,O.OrderDate)=@Year
    group by E.LastName + ' ' + E.FirstName) t1
    LEFT JOIN
    (select 
        OD.OrderID,
        E.LastName + ' ' + E.FirstName as Seller,
        OD.Quantity*OD.UnitPrice*(1-OD.Discount) as Cost
      from Employees E,Orders O,"Order Details" OD
      where O.EmployeeID=E.EmployeeID and O.OrderID=OD.OrderID and datepart(year,O.OrderDate)=@Year) t2
    ON  t1.seller=t2.seller AND t1.cost=t2.cost
    order by cost desc



--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
4ybaka
Дата 18.10.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile +1
если кому-нибудь нужно,то вот скрипт после синтаксической обработки:
Код

GO
alter proc GreatestOrders
        @Year int,
        @Count int
AS
select top (@Count) t1.seller,t2.orderID,t1.cost from
    (select 
        E.LastName + ' ' + E.FirstName as Seller,
        max(OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as Cost
    from Employees E,Orders O,"Order Details" OD
    where O.EmployeeID=E.EmployeeID and O.OrderID=OD.OrderID and datepart(year,O.OrderDate)=@Year
    group by E.LastName + ' ' + E.FirstName) t1
    LEFT JOIN
    (select 
        OD.OrderID,
        E.LastName + ' ' + E.FirstName as Seller,
        OD.Quantity*OD.UnitPrice*(1-OD.Discount) as Cost
      from Employees E,Orders O,"Order Details" OD
      where O.EmployeeID=E.EmployeeID and O.OrderID=OD.OrderID and datepart(year,O.OrderDate)=@Year) t2
    on  t1.seller=t2.seller AND t1.cost=t2.cost
    order by t1.cost desc



--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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