Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2021
Joser Joser is offline
Miembro
 
Registrado: sep 2012
Posts: 18
Poder: 0
Joser Va por buen camino
Contar registros por mes

Buenas tardes, tengo una consulta en Firebird 2.5 que cuenta los registros de una tabla y los agrupa por mes (campo Fecha= date), paso por parámetros (mes y año) pero me gustaría que lo hiciera de una sola vez.
Que pudiera quedar algo así:

Enero - 10
Febrero - 20
Marzo - 0 ( aquellos que no tienen valor asignarle 0)
...
...
...
Diciembre - 8

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 30-09-2021
PepCat PepCat is offline
Miembro
 
Registrado: mar 2017
Posts: 96
Poder: 8
PepCat Va por buen camino
con SQL Server seria algo así:

Código SQL [-]
SELECT Año=Year(Fecha), Mes=Month(Fecha), Contador=Count(*)
FROM "Tabla"
GROUP BY Year(Fecha), Month(Fecha)
ORDER BY Year(Fecha), Month(Fecha)
Responder Con Cita
  #3  
Antiguo 30-09-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Joser Ver Mensaje
Buenas tardes, tengo una consulta en Firebird 2.5 que cuenta los registros de una tabla y los agrupa por mes (campo Fecha= date), paso por parámetros (mes y año) pero me gustaría que lo hiciera de una sola vez.
Que pudiera quedar algo así:
Enero - 10
Febrero - 20
Marzo - 0 ( aquellos que no tienen valor asignarle 0)
...
...
...
Diciembre - 8
Desde ya muchas gracias.
https://www.clubdelphi.com/foros/showthread.php?t=93348
Responder Con Cita
  #4  
Antiguo 30-09-2021
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
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
  #5  
Antiguo 01-10-2021
Joser Joser is offline
Miembro
 
Registrado: sep 2012
Posts: 18
Poder: 0
Joser Va por buen camino
Muchas gracias por sus respuestas; manelb tu código me dio los resultados esperados y de hecho eh podido adaptarlo en otros pedidos.
Saludos.
Responder Con Cita
Respuesta



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 10:45:43.


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