Ich habe eine SALES_RECEIPT
Tabelle und eine (Verkaufs-) RETURNS
Tabelle, die beide REP_ID
als Fremdschlüssel aus der SALES_REP
Tabelle haben. Ich möchte den Gesamtumsatz und die Gesamtrendite für jeden Vertriebsmitarbeiter summieren und die Provision aus den Verkäufen und die verlorene Provision aus den Retouren berechnen.Aggregatberechnungen aus 2 separaten Tabellen
Die Abfrage wird ohne Fehler ausgeführt, aber die Werte in den Spalten stimmen nicht. Die Werte sind viel größer als die tatsächlichen Werte. Ich versuchte sowohl INNER JOIN als auch LEFT JOIN, um die RETURNS-Tabelle zu verknüpfen, aber das behob das Problem nicht.
SELECT Format(SALES_RECEIPT.SALE_DATE,'yyyy-mm') AS [Year-Month],
SALES_REP.rep_Name,
Sum(SALES_RECEIPT.SELLING_PRICE*SALES_RECEIPT.quantity) AS [Total Sales],
Sum((Nz(SALES_RECEIPT.SELLING_PRICE,0)*Nz(SALES_RECEIPT.quantity,0))*(Nz(SALES_RECEIPT.commission_percent,100)*0.001)) AS [Gross Commission],
Sum(Nz(returns.selling_price * returns.quantity)) AS [Returns Sales],
Sum(Nz(returns.selling_price*returns.quantity)) AS [Returns Sales], Sum((Nz(RETURNS.SELLING_PRICE,0)*Nz(RETURNS.quantity,0))*(Nz(RETURNS.commission_percent,100)*0.001)) AS [Lost Commission],
Sum((Nz(SALES_RECEIPT.SELLING_PRICE,0)*Nz(SALES_RECEIPT.quantity,0))*(Nz(SALES_RECEIPT.commission_percent,100)*0.001))-Sum((Nz(RETURNS.SELLING_PRICE,0)*Nz(RETURNS.quantity,0))*(Nz(RETURNS.commission_percent,100)*0.001)) AS [Net Commission]
FROM
(SALES_RECEIPT INNER JOIN SALES_REP ON SALES_RECEIPT.REP_ID = SALES_REP.REP_ID)
LEFT JOIN RETURNS ON SALES_RECEIPT.REP_ID = RETURNS.REP_ID
WHERE (((SALES_RECEIPT.SALE_DATE) Between #1/1/2000# And #12/31/2050#))
GROUP BY Format(SALES_RECEIPT.SALE_DATE,'yyyy-mm'), SALES_REP.rep_Name;
Debuggen Sie es, indem Sie die RETURNS nur für einige Verkäufe summieren: 'SELEct Sum (Nz (returns) .selling_price * returns.quantity)) AS [Gibt Verkäufe zurück] FROM RETURNS WHERE REP_ID IN (hier einige Verkaufs-IDs setzen) GROUP BY REP_ID' und prüfen, ob die zurückgegebenen Nummern korrekt sind –
Der folgende Code hat korrekte Werte für "Return Sales" aber Wie man alles in derselben Abfrage macht, ist der schwierige Teil. SELECT-Format (returns.return_DATE, 'yyyy-mm') AS [Jahr-Monat], SALES_REP.rep_Name AS [Verkaufsperson], Summe (Nz (returns.selling_price * returns.quantity)) AS [Verkauf zurückgibt] FROM RETURNS INNER JOIN SALES_REP AUF RETURNS.REP_ID = SALES_REP.REP_ID WHERE RETURNS.RETURN_DATE Zwischen # 1/1/2000 # Und # 12/31/2050 # GROUP BY Format (RETURNS.RETURN_DATE, 'yyyy-mm'), SALES_REP .rep_Name; –
Sorry ... kein Access-Guru ... sieht so aus, als ob Sie am Ende der Auswahl auch Semikolon benötigen. Ich habe es ein letztes Mal bearbeitet. Lass mich wissen wie es funktioniert. –