需要基本的SQL查询帮助

时间:2012-03-27 03:54:26

标签: sql sql-server tsql erd

我正在练习练习,但我的查询有一个小问题。 我的初始代码如下。问题是我在最后一栏/

中得到了错误的答案

问题:查询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的图片。

2 个答案:

答案 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'