Hola.
Te agradezco el planteamiento que me has mandado. No obstante hay un problema. La tabla tiene, aprox 21000 registros (en diferentes categorías) y la consulta genera (inexplicablemente) más de 641000 filas. De hecho, al intentar alojarlas en una matriz, me da un error de memoria.
Por cierto. El campo fecha_de_inicio es de tipo DATE.
Debe haber algo en esta consulta que multiplica el número de filas recuperadas. La verdad es que no tengo experiencia con los JOIN.