Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединение двух таблиц с датами  [new]
Kudrik
Member

Откуда:
Сообщений: 6
Всем привет.
Просьба помочь в решение одной несложной задачи с объединением двух таблиц с использованием временного периода.

Задача:
Необходимо вернуть сумму выручки по филиалам и сегментам за 1 месяц скажем - за январь 2017 года.

Таблица №1
BILLS
название поля month_start_date subs_id revenue
описание Дата начала месяца ID абонента выручка за месяц
примеры значений 01.01.2016 1234567 500
01.02.2016 2345678 675
… … …

Таблица №2
SUBSCRIBERS
название поля filial_id subs_id rate_plan_id segment
описание ID филиала ID абонента ID тарифа название сегмента
примеры значений 1 1234567 44 B2B
2 2345678 554 B2C
… … … …
9 окт 19, 10:29    [21990127]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух таблиц с датами  [new]
Kudrik
Member

Откуда:
Сообщений: 6
Jpeg таблиц

Модератор: исходные данные прикладывайте в виде скриптов, а не скриншотов


Модератор: Вложение удалено.
9 окт 19, 10:42    [21990148]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух таблиц с датами  [new]
nenastik
Member

Откуда:
Сообщений: 3
Kudrik,

примерно такой запрос будет:
SELECT 
	s.filial_id AS 'ID филиала', 
	SUM(b.revenue) AS 'Сумма выручки'
FROM BILLS B
INNER JOIN SUBSCRIBERS S ON B.subs_id = S.subs_id
WHERE b.month_start_date >= '2017-01-01T00:00:00'
	AND b.month_start_date <= '2017-02-01T00:00:00'
GROUP BY s.filial_id

Если нужно деление по сегментам, то группируем по s.segment.

Можно группировать сразу и по тому, и по другому:
SELECT 
	s.filial_id AS 'ID филиала', 
	s.segment AS 'Сегмент',
	SUM(b.revenue) AS 'Сумма выручки'
FROM BILLS B
INNER JOIN SUBSCRIBERS S ON B.subs_id = S.subs_id
WHERE b.month_start_date >= '2017-01-01T00:00:00'
	AND b.month_start_date <= '2017-02-01T00:00:00'
GROUP BY s.filial_id, s.segment

Однако тут недостаточно данных, чтобы определить, какая логика будет верна:
GROUP BY s.filial_id, s.segment
или же
GROUP BY s.segment, s.filial_id
т.к. неясно, что является делением более высокого уровня - сегмент или филиал.
вчера, 14:50    [21993781]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить