Нужна помощь с базовым SQL-запросом - PullRequest
1 голос
/ 27 марта 2012

Я делал некоторые упражнения для практики, и у меня возникла небольшая проблема с моим запросом. Мой начальный код ниже. Проблема в том, что я получаю неправильный ответ в последнем столбце /

Вопрос: запрос, чтобы выяснить суммарные приписанные продажи каждому продавцу для всех SalesOrders, размещенных в 2008 году. Используйте TotalDue заказов, чтобы найти суммы продаж, и SalesPersonID, чтобы найти продавца, которого нужно атрибутировать. Например. SalesOrderID 43659 следует отнести к SalesPersonID 279.

  SELECT DISTINCT p.BusinessEntityID,p.FirstName,p.LastName,  t.TotalDue
    FROM Person.Person p,Sales.SalesPerson s,Sales.SalesOrderHeader t
    WHERE p.BusinessEntityID = s.BusinessEntityID 

Вот изображение моего ERD http://www.2shared.com/photo/h2-jMQyP/AdventureWorks2008.html.

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Это выглядит как идеальный пример использования предложения GROUP BY.

Попробуйте выполнить следующий запрос:

select p.BusinessEntityID, p.FirstName, p.LastName, sum(t.TotalDue) as TotalDue
from Person.Person p
join Sales.SalesPerson s on p.BusinessEntityID = s.BusinessEntityID
join Sales.SalesOrderHeader t on t.BusinessEntityID = s.BusinessEntityID
where year(t.OrderDate) = 2008
group by p.BusinessEntityID, p.FirstName, p.LastName
0 голосов
/ 27 марта 2012

Если вы хотите, чтобы итоговая сумма была сделана в 2008 году, вы должны предоставить еще одно условие для этой части года

SELECT DISTINCT p.BusinessEntityID,p.FirstName,p.LastName,  t.TotalDue
FROM Person.Person p,Sales.SalesPerson s,Sales.SalesOrderHeader t
WHERE p.BusinessEntityID = s.BusinessEntityID 
and year(date_column) = '2008'
...