0
我有三個表:加入三個表的額頭在SQL Server
Sales.SalesOrderHeader
:SalesOrderID
(PK)OrderDate
TotalDue,SalesPersonID
- ...
Sales.SalesPerson
:BusinessEntityID
(PK)- ...
Person.Person
:BusinessEntityID
(PK)FirstName
起LastName
- ...
表SalesPerson
的作用就像一個聯營實體,它不僅有助於共同PK(相同的名稱和Person
命名爲SalesOrderHeader
SalesPersonID
)。
現在我想顯示一個表如下所示:
BusinessEntityID FirstName LastName Total attributed sales
---------------- --------- -------- ----------------------
1 285 Saeeed Abbas 32323.88
2 287 Amy Albert 1214323.98
… … … … …
有一些salesOrders
與null
銷售人員,所以我想忽略,並總結銷售(總結TotalDue
)爲2008年由每個銷售人員。
這是迄今爲止我的T-SQL代碼:
select
SUM(s.TotalDue) as 'Total attributed sales',
p.BusinessEntityID,
p.FirstName,
p.LastName
from Sales.SalesOrderHeader as s
right outer join Sales.SalesPerson as sp on s.SalesPersonID=sp.BusinessEntityID
left outer join Person.Person as p on sp.BusinessEntityID=p.BusinessEntityID
where
s.OrderDate between '2008-01-01 00:00:00.000' and '2008-12-31 23:59:59.999'
and SalesPersonID is not null
group
--Order
by SalesOrderID,
SalesPersonID
有沒有語法錯誤,但我打算查詢不起作用。
的SQL Server的錯誤消息類似於
列,因爲它不是在聚合函數或GROUP BY子句中包含「Person.Person.BusinessEntityID」在選擇列表中無效。
所以有人能幫助我嗎?非常感謝您的幫助。
感謝那些工作!但是我發現個人銷售員的訂單總額並沒有總和。相反,當我通過姓氏使用訂單時,我發現這些重複的銷售人員姓名。你能幫我進一步請 – 2012-03-19 03:19:58
你應該不需要加入SalesPerson,因爲你說它只是一個關聯表。您正在執行的分組順序也很重要。在這種情況下,您不需要按SalesOrderID或SalesPersonID進行分組,因爲您只選擇BusinessEntityID。 – hkf 2012-03-19 03:26:16
這真的是它的釘子!非常感謝! – 2012-03-19 03:38:47