2012-03-23 4 views
0

以下は比較的簡単な販売クエリですが、売り上げを持つディーラーだけでなく、すべてのディーラーを拾いたいと思っています。これは可能ですか?SQLクエリ売り上げがない場合でもすべての顧客を追加

SELECT dbo.tblDealer.DealerID, Firstname, LastName, 
SUM(dbo.tblOrderDetail.PSVAmount) AS "PSV", 
SUM(dbo.tblOrderDetail.UplineVolume) AS "Upline", 
SUM(dbo.tblOrderDetail.LineTotal) AS "Product Total" 
FROM tblOrderDetail 
inner join tblOrder 
on dbo.tblOrderDetail.OrderID = dbo.tblOrder.OrderID 
inner join tblDealership on dbo.tblOrder.DealershipID = dbo.tblDealership.DealershipID 
inner join tblDealer on dbo.tblDealership.DealerID = dbo.tblDealer.DealerID 
where orderDate between '3/01/12' and '3/21/12 23:59:59' 
and dbo.tbldealer.active = -1 

GROUP BY dbo.tblDealer.DealerID, Firstname, LastName 
+3

は –

+1

参照ジェフアトウッドさん[SQLのJOINのビジュアルな説明を]参加(HTTP外側左してみてください/www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) - 非常に役立つ –

答えて

3

あなたが参加するの順序を変更し、代わりにinner joinouter joinを行う必要があります:/:

SELECT dbo.tblDealer.DealerID, Firstname, LastName, 
SUM(dbo.tblOrderDetail.PSVAmount) AS "PSV", 
SUM(dbo.tblOrderDetail.UplineVolume) AS "Upline", 
SUM(dbo.tblOrderDetail.LineTotal) AS "Product Total" 
FROM tblDealer 
inner join tblDealership 
on dbo.tblDealership.DealerID = dbo.tblDealer.DealerID 
left join tblOrder 
on dbo.tblOrderDetail.OrderID = dbo.tblOrder.OrderID AND orderDate between '3/01/12' and '3/21/12 23:59:59' 
left join tblOrder 
on dbo.tblOrderDetail.OrderID = dbo.tblOrder.OrderID 
where dbo.tbldealer.active = -1 
GROUP BY dbo.tblDealer.DealerID, Firstname, LastName 
関連する問題