Haber, paso a explicar más detalladamente el problema:
Código sql:
Ver originalTabla: public.tabla1
Columna | Tipo | Modificadores
---------+-----------------------+---------------
fecha1 | TIMESTAMP |
campo1 | INT | (PRIMARY KEY)
Tabla: public.tabla2
Columna | Tipo | Modificadores
---------+-----------------------+---------------
fecha2 | TIMESTAMP |
campo2 | INT | (FOREIGN KEY --> tabla1.campo1)
contador | INT |
Tabla: public.tabla3
Columna | Tipo | Modificadores
---------+-----------------------+---------------
fecha3 | TIMESTAMP | (PK)
campo3 | INT | (FOREIGN KEY --> tabla1.campo1) / (PK)
Tabla: public.tabla4
Columna | Tipo | Modificadores
---------+-----------------------+---------------
fecha4 | TIMESTAMP | (PK)
campo4 | INT | (FOREIGN KEY --> tabla1.campo1) / (PK)
Tabla: public.tabla5
Columna | Tipo | Modificadores
---------+-----------------------+---------------
fecha5 | TIMESTAMP |
campo5 | INT | (FOREIGN KEY --> tabla1.campo1)
otro |
Qué necesito de estas tablas?
Fecha | COUNT(campo2) | COUNT(campo3) | COUNT(campo4) | SUM(campo5)
Utilizo dos fechas para buscar en un periodo. Cómo lo intento resolver?
Código sql:
Ver originalSELECT DISTINCT c2.fec2, c2.camp2, c3.camp3, c4.camp4, c5.camp5 FROM
(SELECT DISTINCT t1.campo1 camp1 FROM public.tabla1 t1 ORDER BY ct.recno) c1,
(SELECT t2.fecha fec2, COUNT(COALESCE(t2.campo2,0)) camp2 FROM public.tabla2 t2 NATURAL INNER JOIN public.tabla1 t1 WHERE t2.fecha BETWEEN '25-08-2009' AND '06-10-2009' GROUP BY t2.fecha ) c2,
(SELECT t3.fecha fec3, COUNT(COALESCE(t3.campo3,0)) camp3 FROM public.tabla3 t3 NATURAL INNER JOIN public.tabla1 t1 WHERE t3.fecha BETWEEN '25-08-2009' AND '06-10-2009' GROUP BY t3.fecha) c3,
(SELECT t4.fecha fec4, COUNT(COALESCE(t4.campo3,0)) camp4 FROM public.tabla4 t4 WHERE t4.fecha BETWEEN '25-08-2009' AND '06-10-2009' GROUP BY t4.fecha) c4,
(SELECT t5.fecha fec5, COALESCE(SUM(t5.campo3), 0) camp5 FROM public.tabla5 t5 WHERE t5.fecha BETWEEN '25-08-2009' AND '06-10-2009' GROUP BY t5.fecha) c5,
public.tabla2 t2, public.tabla3 t3
WHERE t2.campo2 = c1.camp1 AND
t3.campo3 = c1.camp1
ORDER BY c2.fec2;
Entrega como resultado:
Código sql:
Ver originalfec2 camp2 camp3 camp4 camp5
----------------------------------------------------
04-10-2009 12 8 8 200
05-10-2009 8 8 8 200 --> Repite el último valor
06-10-2009 6 8 8 200 --> Repite el último valor
En el lugar en donde repite el último valor, en realidad no existía registro, pero postgres igual pone el valor anterior, ese es el valor en donde quiero poner un "0" o nada, o algo, me entiendes?