Добавить count () в сводную таблицу с итогами - PullRequest
1 голос
/ 24 февраля 2020

У меня есть следующий запрос: (упрощенный до одного года)

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", но я не уверен, правильно ли я делаю это на сводной таблице, чтобы сгруппировать их и показать счетчик по годам

, сейчас кажется, что все заказы учитываются по мере необходимости, однако, когда я вручную проверяю БД, кажется, что данные отключены.

также, я не понимаю, почему так много раз повторяется «компания», когда я делаю группирование по ней?

пример

1 Ответ

0 голосов
/ 25 февраля 2020

Я закончил дело вместо сводной таблицы. это решило проблему с форматом:

            CAST(SUM(CASE WHEN TheYear = 2010 THEN 1 ELSE 0 END)AS INT) AS [Orders - 2010] ,
            CAST(SUM(CASE WHEN TheYear = 2010 THEN Total ELSE 0 END)AS INT) AS [Total - 2010],

на случай, если у кого-то это работает:)

...