Ms access Access查询无法识别子查询中的值
以下查询在两个单独表的子查询中进行了聚合计算,这些值将传递给主查询 (注意上面的消息和下面发布的代码已经根据Andre的评论进行了更新。由于错误,原始代码没有运行。)Ms access Access查询无法识别子查询中的值,ms-access,subquery,aggregate,Ms Access,Subquery,Aggregate,以下查询在两个单独表的子查询中进行了聚合计算,这些值将传递给主查询 (注意上面的消息和下面发布的代码已经根据Andre的评论进行了更新。由于错误,原始代码没有运行。) 第二次尝试,基于您的原始查询-您得到的所有错误都可以解释: totSales.Year-Month:必须将其放在方括号中,包括在SELECT和GROUP BY子句中:totSales.[Year-Month] 否则它将被解释为[totSales.Year]减去[Month] 选择SUM(totReturns.[Return Sa
第二次尝试,基于您的原始查询-您得到的所有错误都可以解释:
:必须将其放在方括号中,包括在SELECT和GROUP BY子句中:totSales.Year-Month
totSales.[Year-Month]
否则它将被解释为[totSales.Year]减去[Month]
但在选择SUM(totReturns.[Return Sales])
中,您有totReturns
(注意退货中的额外“s”)作为[Returns Sales]
:这两个字段未在FROM子句中的任何位置定义TotCommissions、TotLostCommissions
:必须将其放在方括号中,包括在SELECT和GROUP BY子句中:totSales.Year-Month
totSales.[Year-Month]
否则它将被解释为[totSales.Year]减去[Month]
但在选择SUM(totReturns.[Return Sales])
中,您有totReturns
(注意退货中的额外“s”)作为[Returns Sales]
:这两个字段未在FROM子句中的任何位置定义TotCommissions、TotLostCommissions
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
;