Я пытаюсь создать запрос, который возвращает результаты заказов клиентов (созданных за месяц, например, в январе) - отмененные заказы клиентов в этом точном месяце (отмененные заказы клиентов в январе) и отображать результаты, сгруппированные по местоположение (строки) и по годам с месяцем (столбцы).
В настоящее время у меня есть таблица, содержащая всю информацию о заказе клиента, как созданную, так и отмененную. Каждый заказ клиента имеет уникальный номер заказа, место, где он был продан, дату создания и дату отмены. Если заказ клиента все еще действителен, тогда дата отмены будет нулевой или "//". Если заказ клиента отменен, то у него будет дата отмены. В качестве некоторой дополнительной информации заказ клиента может быть создан в январе 2019 года и отменен в июле, августе или декабре и т. Д. Я хотел бы получить чистые заказы клиентов за все месяцы, выполняя валовые заказы клиентов за месяц - отмененный клиент заказы за этот месяц и для определенного местоположения = чистые заказы клиентов за этот месяц для этого местоположения.
Чтобы добиться этого, я попытался создать из таблицы два отдельных запроса: первый, содержащий все действительные заказы клиентов, и второй, содержащий все отмены. Затем я попытался создать кросс-таблицу между двумя другими запросами, пытаясь сосчитать то, что я упомянул выше, сгруппировав по местоположению, а затем изменив год и месяц.
Первый запрос с действительными заказами клиентов с именем cust_valid (упрощенно):
SELECT cust_ords.[SaleLoc], cust_ords.[OrderNum], cust_ords.[CreationDate], cust_ords.[CancelDate]
FROM cust_ords
WHERE cust_ords.[CancelDate] = "" OR cust_ords.[CancelDate] = "//";
Второй запрос с отмененными заказами клиентов с именем cust_cancelled (упрощенный):
SELECT cust_ords.[SaleLoc], cust_ords.[OrderNum], cust_ords.[CreationDate], cust_ords.[CancelDate]
FROM cust_ords
WHERE cust_ords.[CancelDate] <> "" OR cust_ords.[CancelDate] <> "//";
Наконец, кросс-таблица между ними:
TRANSFORM Count(cust_valid.[OrderNum]) AS [NetOrderCount]
SELECT cust_valid.[SaleLoc]
FROM cust_valid LEFT JOIN cust_cancelled ON cust_valid.[CreationDate] = cust_cancelled.[CancelDate]
WHERE cust_valid.[CreationDate] = cust_cancelled.[CancelDate]
GROUP BY cust_ords.[SaleLoc]
PIVOT cust_valid.[CreationDate];
В этом смысле я пытаюсь получить (посчитать) чистые заказы клиентов (общее количество созданных за месяц - что было отменено в этом месяце) для каждого заданного местоположения и отобразить результаты за месяц (в основном имена столбцов должны быть год и месяц). Так, например, если у меня есть 10 заказов клиентов в январе, 5 в феврале и 15 в марте, если 3 из них в январе будут отменены в марте, то я хотел бы считать за месяц с 15 по 3 марта, таким образом, в конечном итоге с 10 января, 5 февраля, 12 марта.