我正在练习练习,但我的查询有一个小问题。 我的初始代码如下。问题是我在最后一栏/
中得到了错误的答案问题:查询2008年放置的所有SalesOrders的每个销售人员的总归属销售额。使用订单的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的图片。
答案 0 :(得分:1)
这看起来是使用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
答案 1 :(得分:0)
如果你想要在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'