私は、受取受領テーブルと返却テーブルを持っています。 2つの表の情報は、それぞれの表にSALES_REP表のRep_ID属性があることを除けば、互いに独立しています。ACCESSサブクエリと集計の計算
最初のサブクエリでは、月ごとに各営業担当者のSALES RECEIPTテーブルから "Total Sales"と "Gross Commission"の合計を計算します。
2番目のサブクエリでは、月ごとに各営業担当者のRETURNSテーブルから "Return Sales"と "Lost Commission"の合計を計算します。
メインクエリでは、「売上高合計」、 「グロスコミッション」、「リターンセールス」、「ロストコミッション」および「ネットコミッション」を毎月表示したいとします。 「ネットコミッション」は「総委員会」から「ロストコミッション」を差し引いたものです。私が持っているコードで
、私はエラーメッセージが表示されます:
「Microsoft Accessデータベースエンジンは、入力テーブルまたはクエリを見つけることができません 『totSales』は存在し、その名前のスペルが正しいことを確認します。」
Select
totSales.Year-Month as [Month/Year],
SALES_REP.rep_name as [Sales Person],
SUM(totSales.[Total Sales]) as [Total Sales],
SUM(totSales.[Gross Commission]) as [Gross Commission],
SUM(totReturns.[Return Sales],0) as [Sales Returns],
SUM(totReturns.[Lost Commission],0) as [Lost Commission],
Round([Gross Commission] - [Lost Commission],2) AS [Net Commission],
(SELECT
Format(SALES_RECEIPT.sale_date,'yyyy-mm') AS [Year-Month],
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,
(SELECT
RETURNS.rep_id,
(Nz(RETURNS.selling_price * 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
From (totSales
LEFT JOIN totReturns on totReturns.rep_id = totSales.rep_id)
INNER JOIN SALES_REP ON totSales.REP_ID = SALES_REP.rep_id
Group By totSales.Year-Month, totSales.rep_name;
以下のクエリではなく、唯一の営業担当者のための毎月の販売手数料のデータを返します。私は、上記のクエリは以下のクエリとしてではなく、すべての販売担当者だけではなく、1営業担当者のために、まったく同じ結果を返すようにしたい。
SELECT Format(DatePart("m",months.month_start),"00") & "/" & Year(months.month_start) AS [Month/Year],
(SELECT SALES_REP.rep_name FROM SALES_REP WHERE SALES_REP.rep_id = 1) AS [Sales Person],
(select Round(Nz(Sum(sales_receipt.SELLING_PRICE * sales_receipt.quantity),0) ,2)
FROM SALES_RECEIPT INNER JOIN SALES_REP ON SALES_REP.REP_ID = SALES_RECEIPT.REP_ID
WHERE SALES_RECEIPT.[SALE_DATE] between months.month_start and months.month_end and SALES_REP.rep_id = 1) AS [Total Sales],
(SELECT Round((Sum(((Nz(SALES_RECEIPT.SELLING_PRICE,0)*Nz(sales_receipt.quantity,0))*(Nz(sales_receipt.commission_percent,100)*0.001)))),2)
FROM SALES_RECEIPT INNER JOIN SALES_REP ON SALES_REP.REP_ID = SALES_RECEIPT.REP_ID
WHERE SALES_RECEIPT.[SALE_DATE] between months.month_start and months.month_end and SALES_REP.rep_id = 1) AS [Gross Commission],
(SELECT Round(Nz(Sum(returns.selling_price * returns.quantity), 0),2)
FROM (returns inner JOIN inventory ON INVENTORY.INVENTORY_ID = returns.INVENTORY_ID)
LEFT JOIN SALES_REP ON SALES_REP.REP_ID = returns.REP_ID
WHERE returns.return_date between months.month_start and months.month_end AND SALES_REP.rep_id = 1) AS [Sales Returns],
(SELECT Round(Nz((Sum(((Nz(returns.SELLING_PRICE,0)*Nz(returns.quantity,0))*(Nz(returns.commission_percent,100)*0.001)))),0),2)
FROM (returns inner JOIN inventory ON INVENTORY.INVENTORY_ID = returns.INVENTORY_ID)
LEFT JOIN SALES_REP ON SALES_REP.REP_ID = returns.REP_ID
WHERE returns.return_date between months.month_start and months.month_end AND SALES_REP.rep_id = 1) AS [Lost Commission],
(SELECT Round((Sum(((Nz(SALES_RECEIPT.SELLING_PRICE,0)*Nz(sales_receipt.quantity,0))*(Nz(sales_receipt.commission_percent,100)*0.001)))),2)
FROM SALES_RECEIPT INNER JOIN SALES_REP ON SALES_REP.REP_ID = SALES_RECEIPT.REP_ID WHERE SALES_RECEIPT.[SALE_DATE] between months.month_start and months.month_end and SALES_REP.rep_id = 1) - (SELECT Round(Nz((Sum(((Nz(returns.SELLING_PRICE,0)*Nz(returns.quantity,0))*(Nz(returns.commission_percent,100)*0.001)))),0),2)
FROM(returns inner JOIN inventory ON INVENTORY.INVENTORY_ID = returns.INVENTORY_ID)
LEFT JOIN SALES_REP ON SALES_REP.REP_ID = returns.REP_ID
WHERE returns.return_date between months.month_start and months.month_end AND SALES_REP.rep_id = 1) AS [Net Commission]
FROM
(SELECT DateSerial(Year(sale_date), Month(sale_date), 1) AS month_start,
DateAdd("d", -1, DateSerial(Year(sale_date), Month(sale_date) + 1, 1)) AS month_end
FROM SALES_RECEIPT
WHERE sale_date between #1/1/2000# And #12/31/2100#
GROUP BY Year(sale_date), Month(sale_date)) AS months;
Round(TotCommissions - TotLostCommissions、2)AS [Net Commission]の後に選択した列は、複数のフィールドを返す括弧内のselect文です。これはSQLでは許可されていません。 この列には 'totSales'という名前を付けましたが、外側のステートメントのFROM句では、テーブルであるようにその列を参照します。このクエリが返す正確な内容は何ですか? – Leviathan
私は、1人の営業担当者の月額手数料データを返すクエリのコードを投稿しました。私は新しいクエリが同じ情報を返すことを望んでいるが、すべての営業担当者に欲しい。 –