Рассчитать общий объем продаж без пропущенных значений при объединении двух таблиц - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть запрос

Мне нужно рассчитать ежемесячные продажи по филиалам и клиентам (данные поступают из одной таблицы)

Данные должны выглядеть следующим образом

enter image description here

Я могу написать запрос об общих продажах за январь_2019:

Я создаю временную таблицу на февраль_2019.Я могу использовать объединение и объединить 2 таблицы, но в феврале_2019, если будут добавлены новые клиенты, то при присоединении к таблицам я пропускаю новых клиентов, и из-за этого общие продажи за этот месяц не совпадают.

Может ли кто-нибудь помочь?

Я написал запрос, подобный приведенному ниже

;with a as
(
select branchid, customer, sum(totalsales) as jan_totalsales from tableA
where year = 2019 and month = 1
group by customer, branched
), feb as

(
select branchid, customer, sum(totalsales) as feb_totalsales  from tableA
where year = 2019 and month = 2
group by customer, branched
)
select a.branchid, feb.branchid, a.jan_totalsales, feb.feb_totalsales
 from a
left join feb on feb.branchid = a.branchid

Я должен создать это во временной таблице и сделать это для march_2019

Опять же, я не получаю новых клиентов, так как присоединяюсь из данных за январь.

Может ли кто-нибудь помочь мне сделать это проще?

1 Ответ

0 голосов
/ 16 февраля 2019

То, что вы после здесь, является условным агрегатом.Это должно привести вас на правильный путь:

SELECT branchid,
       customer,
       SUM(CASE WHEN [Year] = 2019] AND [Month] = 1 THEN totalsales ELSE 0 END) AS JanSales,
       SUM(CASE WHEN [Year] = 2019] AND [Month] = 2 THEN totalsales ELSE 0 END) AS FebSales,
       ....
FROM YourTable
GROUP BY branchid,
         customer;

Если вы не понимаете, как это работает, пожалуйста, спросите.В конце концов, вы должны поддерживать SQL, а не я или другие добровольцы в переполнении стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...