Tengo un conjunto de datos que estoy preparando para una vista dinámica (en Excel). Son datos de clientes y quiero crear una vista que permita resumir cuántos clientes estuvieron activos cada mes. Por lo tanto, necesito duplicar filas con un valor modificado para first_status_date. Estos son mis datos:
Aquí es donde estoy tratando de obtener: (Las filas verdes están duplicadas y las celdas en negrita están modificadas. 
Debido a que estoy agregando un mes al valor de la celda anterior, estoy pensando en trabajar con la función de retraso. Pero no estoy familiarizado con la duplicación de filas. Los id 123 y 356 necesitaban 2 filas duplicadas porque hay una diferencia de 2 meses entre la última y la primera fecha de estado, el id 221 necesita solo 1 fila duplicada, ya que hay una diferencia de un mes.
Puede usar generate_series() para generar las nuevas filas; se necesita un pequeño ajuste para la fecha de finalización para garantizar que obtengamos una fila para el último mes, independientemente del día del mes real:
select t.id, t.first_status, d.first_status_date, t.last_status, t.last_status_date from mytable t cross join lateral generate_series( t.first_status_date, date_trunc('month', t.last_status_date) + interval '1 month', interval '1 month' ) d(first_status_date)