Postgres - конвертировать диапазон дат в отдельный месяц

Я нашел аналогичную помощь, но проблема была более сложной, я хорошо разбираюсь в основах SQL и вычеркиваю здесь. Я получил несколько столбцов a, b, c, startdate, enddate, и мне нужно разбить эти данные на несколько строк в зависимости от того, сколько месяцев находится в пределах диапазона.

Например: a,b,c,1/1/2015, 3/15,2015 станет:

a,b,c,1/1/2015,value_here_doesnt_matter
a,b,c,2/1/2015,value_here_doesnt_matter
a,b,c,3/1/2015,value_here_doesnt_matter

Не имеет значения, когда дата начала или окончания - в определенный день, важны только месяц и год. Поэтому, если в диапазон входит какой-либо день в данном месяце, я бы хотел вывести начальные дни для каждого месяца в диапазоне, причем 1-й день является днем ​​по умолчанию.

Могу ли я посоветовать, в каком направлении начинать? Я пытаюсь выполнить generate_series, но не уверен, является ли это правильным подходом или как заставить его работать с сохранением согласованности данных в первых нескольких произвольных столбцах.

1 ответ

Я думаю generate_series это путь Не зная, как выглядят остальные ваши данные, я бы начал с чего-то вроде этого:

select
  a, b, c, generate_series(startdate, enddate, interval '1 month')::date
from
  my_table
Другие вопросы по тегам