У меня есть следующий запрос: (упрощенный до одного года)
WITH myTable
AS (SELECT cv.Company,
cv.Zip,
DATEPART(year, od.OrderDate) AS TheYear,
'' + DATEPART(year, od.OrderDate) AS TheYear2,
od.OrderNumber AS countOrders,
STUFF(
(
SELECT '| ' + FORMAT(DateVisited, 'MM-yyyy') + ' ' + MeetingType + ' '
FROM CustomerVisits cv1
WHERE(RIGHT(od.Email, LEN(od.Email) - CHARINDEX('@', od.email))) = cv1.EmailDomain
AND cv1.Zip = od.Zip
GROUP BY MeetingType,
FORMAT(DateVisited, 'MM-yyyy')
ORDER BY FORMAT(DateVisited, 'MM-yyyy') ASC FOR XML PATH('')
), 1, 1, '') AS Meetings,
od.FinalProductTotal AS total
FROM orders od
LEFT JOIN CustomerVisits cv ON od.Zip = cv.Zip
WHERE(RIGHT(od.Email, LEN(od.Email) - CHARINDEX('@', od.email))) = cv.EmailDomain
--AND od.OrderDate > @fromDate
AND approved = 1
AND cancelled = 0
AND od.OrderDate > '01-JAN-2010')
- и PIVOT
SELECT Company,
Zip,
Meetings,
[02020] AS [Orders - 2020],
ISNULL(CAST([2020] AS INT), 0) AS [Total - 2020],
Total = CAST((SUM(ISNULL([2020], 0))) AS INT)
FROM myTable PIVOT(COUNT(countOrders) FOR TheYear2 IN([02020])) AS myPvt PIVOT(SUM(total) FOR TheYear IN([2020])) AS myPvt2
GROUP BY Company,
zip,
Meetings,
[2020],
[02020];
Для него я пытаюсь добавить количество заказов для каждого года, но у меня возникают проблемы с пониманием того, как мне поступить, возможно, я слишком усложняю это, но я не получаю правильное количество. Я думаю, что таблица myTable правильно получает "countOrders", но я не уверен, правильно ли я делаю это на сводной таблице, чтобы сгруппировать их и показать счетчик по годам
, сейчас кажется, что все заказы учитываются по мере необходимости, однако, когда я вручную проверяю БД, кажется, что данные отключены.
также, я не понимаю, почему так много раз повторяется «компания», когда я делаю группирование по ней?
пример