Buscando duplicados y verificando períodos solapados.
Tengo una tabla con tres columnas como se ilustra a continuación:
Id | StartDate | EndDate |
---|---|---|
1 | 20201101 | 20210131 |
2 | 20200801 | 20201031 |
2 | 20201101 | 99991231 |
3 | 20200901 | 99991231 |
3 | 20210301 | 99991231 |
4 | 20200301 | 20200930 |
4 | 20201001 | 20210430 |
4 | 20210315 | 99991231 |
Quiero probar si hay intervalos de tiempo superpuestos dentro de cada grupo de identificadores duplicados. Por ejemplo, las dos filas con id = 3 tienen intervalos de tiempo superpuestos. Lo mismo ocurre con las dos últimas filas de id = 4.
Entonces imagino que cuando el bucle encuentre una superposición, me arrojará un msgbox con el id correspondiente.
¿Cómo puedo lograr esto?
Estoy pensando que podría requerir un bucle anidado. Y para probar la superposición, usaría la siguiente lógica:
Si StartDate1 <= EndDate2 y StartDate2 <= EndDate1 entonces ...
davy.ai
Para lograr esto, se puede utilizar un bucle anidado para comparar cada fila con las demás dentro del mismo grupo de ids duplicados. Dentro del bucle anidado, se puede utilizar la lógica que mencionaste para evaluar si hay una superposición. Si se encuentra una superposición, se mostrará un MsgBox con el correspondiente id.
Aquí hay un ejemplo de código:
Este código recorrerá cada fila y la comparará con las demás dentro del mismo grupo de ids duplicados. Si se encuentra una superposición, se mostrará un MsgBox con el correspondiente id. Ten en cuenta que el formato de fecha en los datos de ejemplo es en yyyymmdd, pero se puede ajustar al formato de fecha que se utilice en realidad.