次のクエリでは、2つのテーブルでサブクエリで集約計算が行われ、それらの値がメインクエリに渡されます。アクセスクエリサブクエリの値が認識されない
(アンドレからのコメントに基づいて更新された上記のメッセージと、次のポストされたコードに注意してください。元のコードは、エラーのため実行されませんでした。)
SELECT
totSales.[Month] & " /" AS [Month],
totSales.[Year] AS [Year],
SALES_REP.rep_name AS [Sales Person],
Sum(totSales.[Total Sales]) AS [Total Sales],
Sum(totSales.[Gross Commission]) AS [Gross Commission],
Sum(Nz(totReturns.[Sales Returns],0)) AS [Sales Returns],
Sum(Nz(totReturns.[Lost Commission],0)) AS [Lost Commission],
Round([Gross Commission]-[Lost Commission]) AS [Net Commission]
FROM SALES_REP
INNER JOIN
(
(SELECT
Format(SALES_RECEIPT.sale_date,'yyyy') AS [Year],
Format(SALES_RECEIPT.sale_date,'mm') AS [Month],
Sales_receipt.inventory_id, SALES_RECEIPT.rep_id,
(SALES_RECEIPT.selling_price * SALES_RECEIPT.quantity) AS [Total Sales],
((Nz(SALES_RECEIPT.selling_price, 0) * Nz(SALES_RECEIPT.quantity, 0)) * (Nz(SALES_RECEIPT.commission_percent, 100) * 0.001)) AS [Gross Commission]
FROM SALES_RECEIPT
WHERE SALES_RECEIPT.sale_date Between #1/1/2000# And #12/31/2050#) AS totSales
LEFT JOIN
(SELECT
RETURNS.rep_id, returns.inventory_id, (Nz(RETURNS.selling_price)) * (Nz(RETURNS.quantity)) AS [Sales Returns],
((Nz(RETURNS.selling_price, 0) * Nz(RETURNS.quantity, 0)) * (Nz(RETURNS.commission_percent, 100) * 0.001)) AS [Lost Commission]
FROM RETURNS
WHERE RETURNS.return_date Between #1/1/2000# And #12/31/2050#) AS totReturns
ON totSales.inventory_id = totReturns.inventory_id)
ON SALES_REP.rep_id = totSales.REP_ID
GROUP BY
totSales.[Year]
, totSales.[Month]
, SALES_REP.rep_name
;
最新情報をお寄せいただきありがとうございますクエリはエラーなしで実行されますが、 "Total Sales"値は2倍になります。 「販売返品」の値が正しくないため、「販売返品」の値の多くは、「総売上」の3倍または4倍です。 –
次のコード行にNz関数を追加すると、エラーが表示されます。「条件式のデータ型の不一致」。 Nz(RETURNS.selling_price * RETURNS.quantity)AS [Return Sales]返品のない月がいくつかあるので、Nz関数を使用してnull値の代わりにゼロを取得したいと考えています。 –
@CodeMechanik:私は間違った数字を手助けすることはできません。おそらく結合によって重複したレコードが作成され、合計されます。新しい質問では、[SQL Fiddle](http://sqlfiddle.com/)でサンプルデータを聞いてください。 – Andre