#sql #sql-server
Вопрос:
Я ищу что-то в этом роде.
StartOfWeek EndOfWeek WeekNumber order_opened order_send order_closed
2019-01-01 2019-01-06 2019W01
2019-01-07 2019-01-13 2019W02
2019-01-14 2019-01-20 2019W03
2019-01-21 2019-01-27 2019W04
2019-01-28 2019-02-03 2019W05
У меня есть таблица с 4 столбцами , order_id , opening_date, sending_date и closing_date, я также могу создать таблицу дат.
Я думаю, что мне нужно использовать «с»,
но я не могу найти решение, которое работает,
Любая помощь была бы очень кстати .
С уважением, Антуан
Комментарии:
1. Пожалуйста, предоставьте примерные данные и соответствующие результаты.
Ответ №1:
Если я правильно понимаю, вы хотите отключить и объединить. Я бы рекомендовал:
select c.weeknumber, sum(is_open), sum(is_send), sum(is_close)
from t cross apply
(values (opening_date, 1, 0, 0),
(sending_date, 0, 1, 0),
(closing_date, 0, 0, 1)
) v(date, is_open, is_send, is_close) join
calendar c
on v.date = c.date
group by c.weeknumber;
Я сомневаюсь, что первые две колонки важны для этого вопроса. Не видя таблицы календаря или определения «недели», трудно определить лучший способ их определения.