es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de SQL Postgres para desglosar todas las fechas entre la fecha de inicio y la fecha de finalización para cada cliente.

Tengo una tabla con las siguientes columnas: customerID, startdate, enddate. Por ejemplo:

lang-none
CustomerID startdate(mm/dd/yyyy) Enddate(mm/dd/yyyy)
c1 10-15-2020 10-18-2020
c2 02-20-2021 02-25-2021
c3 12-01-2021 12-08-2021

¿Cómo puedo escribir una consulta SQL para descomponer todas las fechas entre la fecha de inicio y la fecha de fin para cada cliente respectivamente?

El resultado esperado sería:

lang-none
CustomerID exploedcalendardate
c1 10-15-2020
c1 10-16-2020
c1 10-17-2020
c1 10-18-2020
c2 02-20-2021
c2 02-21-2021
c2 02-22-2021
c2 02-23-2021
c2 02-24-2021
c2 02-25-2021
c3 12-01-2021
c3 12-02-2021
c3 12-03-2021
c3 12-04-2021
c3 12-05-2021
c3 12-06-2021
c3 12-07-2021
c3 12-08-2021

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para explotar todas las fechas entre la fecha de inicio y fin para cada cliente, puedes usar la siguiente consulta SQL:

    SELECT
      CustomerID,
      generate_series(startdate, enddate, interval '1 day') as explodedcalendardate
    FROM
      mytable;
    

    Esta consulta utiliza la función generate_series() en Postgres para generar una serie de fechas entre las fechas de inicio y fin para cada cliente. El parámetro interval '1 day' especifica que la serie debe incrementarse en un día entre las fechas. El resultado es una tabla con el CustomerID y la explodedcalendardate para cada día en el rango entre las fechas de inicio y fin para cada cliente.

Comments are closed.