2017-03-06 2 views
0

以下のクエリが実行されると、 "TotalExpense"列は、特定のSalesIDのtblOrderProductに存在する行数と重複します。合計行の項目行重複とSUM

SELECT ItemSales.OrderDate,tblExpense.DateOfExpense ,(Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice))) AS TotalSales, (Nz(SUM(tblExpense.Expense))) AS TotalExpense , (Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice)) - Nz(SUM(tblExpense.Expense)))AS Profit 
FROM (ItemSales 
LEFT JOIN tblOrderProduct ON ItemSales.SalesID = tblOrderProduct.SalesID) 
LEFT JOIN tblExpense ON itemSales.OrderDate = tblExpense.DateOfExpense 
GROUP BY ItemSales.OrderDate, tblExpense.DateOfExpense 
ORDER BY ItemSales.OrderDate 

UNION SELECT ItemSales.OrderDate, tblExpense.DateOfExpense, (Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice))) AS TotalSales, (Nz(SUM(tblExpense.Expense))) AS TotalExpense ,(Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice)) - Nz(SUM(tblExpense.Expense)))AS Profit 
FROM (ItemSales 
RIGHT JOIN tblExpense ON ItemSales.OrderDate = tblExpense.DateOfExpense) 
LEFT JOIN tblOrderProduct ON ItemSales.SalesID = tblOrderProduct.SalesID 
GROUP BY ItemSales.OrderDate,tblExpense.DateOfExpense 
ORDER BY ItemSales.OrderDate 

EDIT: -

私が実行されたクエリから取得した結果は以下を参照してください: enter image description here

値は赤色で強調表示にのみ与えられた日付1000価値が費用を持って、どのように今までに同じ日の売上には22行のデータがあるため、結果は22000です。

この重複の原因は何ですか?

+0

このクエリはやって何を想定していますか?データがなければ、あなたの質問に答えるのは難しいかもしれません。 –

+0

私は取得クエリに次のエラー _Syntaxエラー(演算子がありません)expression'ItemSales.orderDate = tblExpense.DateOfExpense」 LEFT JOINのON tblOrderProduct ItemSalesID = tblOrderProduct.SalesID'_あなたの要求 – GMB

答えて

0

SELECT ItemSales.OrderDate,tblExpense.DateOfExpense ,(Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice))) AS TotalSales, (Nz(SUM(tblExpense.Expense))) AS TotalExpense , (Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice)) - Nz(SUM(tblExpense.Expense)))AS Profit 
 
FROM (ItemSales 
 
LEFT JOIN tblOrderProduct ON ItemSales.SalesID = tblOrderProduct.SalesID) 
 

 
LEFT JOIN 
 
(select DateOfExpense,sum(Expense) AS Expense FROM tblExpense Group by DateOfExpense) 
 
tblExpense ON itemSales.OrderDate = tblExpense.DateOfExpense 
 

 
GROUP BY ItemSales.OrderDate, tblExpense.DateOfExpense 
 
ORDER BY ItemSales.OrderDate 
 

 
UNION 
 

 
SELECT ItemSales.OrderDate, tblExpense.DateOfExpense, (Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice))) AS TotalSales, (Nz(SUM(tblExpense.Expense))) AS TotalExpense ,(Nz(SUM(tblOrderProduct.Quantity * tblOrderProduct.ConsumerPrice)) - Nz(SUM(tblExpense.Expense)))AS Profit 
 
FROM ItemSales 
 

 
RIGHT JOIN 
 
(select DateOfExpense,sum(Expense) AS Expense FROM tblExpense Group by DateOfExpense) 
 
tblExpense ON ItemSales.OrderDate = tblExpense.DateOfExpense 
 

 
LEFT JOIN tblOrderProduct ON ItemSales.SalesID = tblOrderProduct.SalesID 
 
GROUP BY ItemSales.OrderDate,tblExpense.DateOfExpense 
 
ORDER BY ItemSales.OrderDate

+0

ごとに質問を更新しました@TimBiegeleisen – GMB

関連する問題