Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 30-09-2021
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 297
Poder: 10
manelb Va por buen camino
Saludos...

Supongo que la solución que te propone PepCat resuelve tu necesidad, pero el problema que tienes es que no aparecen los meses sin movimientos.

Explico cómo resuelvo yo estas situaciones:
En todas las BD tengo un procedimiento almacenado tal que así:

Código SQL [-]
SET TERM ^ ;
CREATE OR ALTER PROCEDURE MBM_NUMEROS (
    desde integer,
    hasta integer)
returns (
    numero integer)
as
declare variable i integer;
begin
  i=desde;
  while (i<=hasta) do
  begin
    NUMERO=i;
    suspend;
    i=i+1;
  end
end^
SET TERM ; ^

Esto me permite lanzar una consulta que me devuelve únicamente una columna con cualquier rango de números que necesite...
Dias de la semana:
Código SQL [-]
select * from mbm_numeros(1,7);

Mese del año:
Código SQL [-]
select * from mbm_numeros(1,12);

A partir de aquí, imagina una tabla de facturas con una consulta que me devuelve los importes mensuales totales:
Código SQL [-]
select Extract(Month from fv.fecha) as Mes, sum(fv.imp_factura) as Total_mes 
from tbl_Facturas_vta fv
where fv.fecha between '2021.01.01' and '2021.12.31' 
group by mes;

Y lo que hago es un join con la tabla de números tal que así:
Código SQL [-]
select numero as Mes, Total_mes 
from mbm_numeros(1,12) nu left outer join 
     (select Extract(Month from fecha) as Mes, sum(imp_factura) as Total_mes 
      from tbl_Facturas_vta
      where fecha between '2021.01.01' and '2021.12.31' 
      group by mes) fv on(nu.numero=fv.mes) ;

De esta forma siempre aparecerán los doce meses del año, los 30 o 31 días del mes, o los 365 días del año


Siempre puedes montarte un procedimiento almacenado que te devuelva directamente los datos, pero la solución de mi tabla de números siempre me resuelve este tipo de situaciones

Un saludo a todos
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contar registros en FB Angel.Matilla Firebird e Interbase 4 17-04-2018 19:37:44
Contar Registros KAYO SQL 10 22-07-2010 19:47:43
Contar registros en una columna dtomeysoto SQL 5 18-04-2008 21:32:52
Contar registros de un MailMerge Elenita Servers 0 31-10-2006 10:47:31
Contar Registros Roilo SQL 10 18-07-2006 21:20:24


La franja horaria es GMT +2. Ahora son las 23:12:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi