Я хотел бы рассчитать месячные совокупные суммы с разными значениями. У меня есть таблица INTERNET_SALES_RECEIPT, в которой есть запись для каждого предмета, проданного с внешним ключом в таблицу INTERNET_SHIPPING_CHARGES.
Товары, поставляемые в одном и том же ящике, имеют один и тот же внешний ключ из таблицы INTERNET_SHIPPING_CHARGES.
Следующий код выполняется, но запрос не может найти значения для months.month_start и months.month_end , в результате чего запрос выдает приглашение и зависает.
SELECT Format(DatePart("m", months.month_start), "00") & "/" & Year(months.month_start) AS [Month/Year],
(SELECT Round(Nz(Sum(internet_shipping_charges.shipping_collected), 0), 2)
FROM
(SELECT DISTINCT internet_shipping_charges.shipping_collected
FROM internet_shipping_charges
INNER JOIN INTERNET_SALES_RECEIPT ON INTERNET_SALES_RECEIPT.INTERNET_SHIPPING_ID = INTERNET_SHIPPING_CHARGES.INTERNET_SHIPPING_ID
WHERE internet_sales_receipt.SALE_DATE BETWEEN months.month_start AND months.month_end )
) AS [Total Shipping Collected],
(SELECT Round(Nz(Sum(internet_shipping_charges.shipping_actual_cost), 0), 2)
FROM
(SELECT DISTINCT internet_shipping_charges.shipping_actual_cost
FROM internet_shipping_charges
INNER JOIN INTERNET_SALES_RECEIPT ON INTERNET_SALES_RECEIPT.INTERNET_SHIPPING_ID = INTERNET_SHIPPING_CHARGES.INTERNET_SHIPPING_ID
WHERE internet_sales_receipt.SALE_DATE BETWEEN months.month_start AND months.month_end )
) AS [Total Shipping Actual Cost],
(SELECT Round(Nz(Sum(internet_shipping_charges.shipping_collected), 0) - Nz(Sum(internet_shipping_charges.shipping_actual_cost), 0), 2)
FROM
(SELECT DISTINCT internet_shipping_charges.shipping_collected, internet_shipping_charges.shipping_actual_cost
FROM internet_shipping_charges
INNER JOIN INTERNET_SALES_RECEIPT ON INTERNET_SALES_RECEIPT.INTERNET_SHIPPING_ID = INTERNET_SHIPPING_CHARGES.INTERNET_SHIPPING_ID
WHERE internet_sales_receipt.[SALE_DATE] BETWEEN months.month_start AND months.month_end)
) AS [Shipping Gain/Loss]
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 internet_sales_receipt
WHERE sale_date BETWEEN DateAdd("yyyy", [Enter last two digits of year], #1/1/2000#) AND DateAdd("yyyy", [Enter last two digits of year], #12/31/2000#)
GROUP BY Year(sale_date), Month(sale_date)
) AS months;
Я пытался добавить различные формы функции DatePart () к подзапросам, но всегда получал одинаковую ошибку пропущенных значений для months.month_start и months.month_end .