sql >> Base de Datos >  >> RDS >> Oracle

¡Muestre los datos de la tabla incluso si no hay datos! Oráculo

Primero, parece que su aplicación se beneficiaría de una tabla de calendario. Una tabla de calendario es una lista de fechas e información sobre las fechas.

En segundo lugar, puede hacer esto sin usar tablas temporales. Este es el enfoque:

with constants as (select min(thedate>) as firstdate from <table>)
     dates as (select( <firstdate> + rownum - 1) as thedate
               from (select rownum
                     from <table> cross join constants
                     where rownum < sysdate - <firstdate> + 1
                    ) seq
              )
select dates.thedate, count(t.date)
from dates left outer join
     <table> t
     on t.date = dates.thedate
group by dates.thedate

Aquí está la idea. Las constantes de alias registran la fecha más antigua en su tabla. Las fechas de alias luego crean una secuencia de fechas. La subconsulta interna calcula una secuencia de números enteros, usando número de fila, y luego los agrega a la primera fecha. Tenga en cuenta que esto supone que tiene en promedio al menos una transacción por fecha. Si no, puedes usar una mesa más grande.

La parte final es la combinación que se utiliza para recuperar información sobre las fechas. Tenga en cuenta el uso de count(t.date) en lugar de count(*). Esto cuenta la cantidad de registros en su tabla, que debe ser 0 para fechas sin datos.