У меня есть таблица типа (код в SAS SQL, но я могу преобразовать ответ из движка SQLServer, так как у меня есть небольшой опыт в этом):
proc sql;
create table work.temp1
(date_from num informat=date7. format=date7.,
date_to num informat=date7. format=date7.,
some_number num);
insert into work.temp1
values('15MAY2018'd,'26JUL18'd, 10);
QUIT;
результат:
, и я хочу преобразовать его в (с некоторым умным соединением и, возможно, некоторой временной таблицей с датами и месяцами) в:
proc sql;
create table work.temp2
(date_from num informat=date7. format=date7.,
date_to num informat=date7. format=date7.,
some_number num);
insert into work.temp2
values('15MAY2018'd,'31MAY18'd, 10)
values('1JUN2018'd,'30JUN18'd, 10)
values('1JUL2018'd,'26JUL18'd, 10);
QUIT;
результат:
Все остальные столбцы должны быть продублированы.Даты от и до всегда указаны в одной календарной дате, но каждая строка может быть в разные годы (2016-2020).
[РЕДАКТИРОВАТЬ]:
Том решение выглядит хорошоно прежде чем использовать, я пытаюсь разработать решение SQL.
Я добавил таблицу «календарь» в свою базу данных, и она выглядит так: name: work.calendar
Теперь объединение, о котором я думаюбыло бы что-то вроде:
SELECT t1.*
FROM work.temp1 t1 INNER JOIN
work.calendar t2 ON t1.date_from >= t2.month_FROM AND t1.date_to <= month_TO
Но это, очевидно, не работает.