Итак, я пытаюсь найти месяц / год, в котором было наибольшее количество транзакций продажи.
Мой запрос в настоящее время:
SELECT
DATENAME(M, OrderDate) as orderMonth,
year(OrderDate) as orderYear,
count(SalesOrderID) as orderCount
FROM
Sales.SalesOrderHeader soh
GROUP BY OrderDate
HAVING SUM(soh.SalesOrderID) >= ALL (
SELECT SUM(SalesOrderID) FROM Sales.SalesOrderHeader
GROUP BY OrderDate
)
, однако, если я запускаю все вышеИмея строку, чтобы она возвращала все столбцы, а не только самый верхний столбец, она возвращает несколько дубликатов месяцев / лет и orderCounts. например, в июне 2011 года в этом запросе было возвращено около 30 строк, каждая из которых находится в диапазоне от 2 до 11 orderCounts, в общей сложности запрос возвращает 1124 строки, где он должен возвращать только 38, начиная с диапазона продаж с 2011 по 2014 год ив этом диапазоне всего 38 месяцев.
Я почти уверен, что мне нужно указать месячную группу, и я должен изменить свои значения GROUP BY на что-то вроде:
GROUP BY DATENAME(month, soh.OrderDate), DATENAME(YYYY, soh.OrderDate)
, но потом я получаюошибка «Каждое выражение GROUP BY должно содержать хотя бы один столбец, который не является внешней ссылкой»