Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 30-04-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Para lo que necesitas, te he creado un procedimiento almacenado
el cual te entregara los datos como lo requieres...

Para obtener los datos puedes hacer lo siguiente:

Código SQL [-]
SELECT * FROM CATEGORIA_TOTALES(QUE_ANO)

Ejmp:
Código SQL [-]
SELECT * FROM CATEGORIA_TOTALES(2010)

Procedimiento Almacenado: Debes crear este procedimiento en tu Base de datos...

Código SQL [-]
CREATE PROCEDURE CATEGORIA_TOTALES (
    QUE_ANO INTEGER)
RETURNS (
    CATEGORIA VARCHAR(30),
    ENERO DOUBLE PRECISION,
    FEBRERO DOUBLE PRECISION,
    MARZO DOUBLE PRECISION,
    ABRIL DOUBLE PRECISION,
    MAYO DOUBLE PRECISION,
    JUNIO DOUBLE PRECISION,
    JULIO DOUBLE PRECISION,
    AGOSTO DOUBLE PRECISION,
    SEPTIEMBRE DOUBLE PRECISION,
    OCTUBRE DOUBLE PRECISION,
    NOVIEMBRE DOUBLE PRECISION,
    DICIEMBRE DOUBLE PRECISION,
    TOTAL DOUBLE PRECISION)
AS
DECLARE VARIABLE TENERO FLOAT = 0;
DECLARE VARIABLE TFEBRERO FLOAT = 0;
DECLARE VARIABLE TMARZO FLOAT = 0;
DECLARE VARIABLE TABRIL FLOAT = 0;
DECLARE VARIABLE TMAYO FLOAT = 0;
DECLARE VARIABLE TJUNIO FLOAT = 0;
DECLARE VARIABLE TJULIO FLOAT = 0;
DECLARE VARIABLE TAGOSTO FLOAT = 0;
DECLARE VARIABLE TSEPTIEMBRE FLOAT = 0;
DECLARE VARIABLE TOCTUBRE FLOAT = 0;
DECLARE VARIABLE TNOVIEMBRE FLOAT = 0;
DECLARE VARIABLE TDICIEMBRE FLOAT = 0;
DECLARE VARIABLE TTOTAL FLOAT = 0;
BEGIN

  FOR
    SELECT Categoria,
           SUM( Case extract(month from fecha) when 1 then cargo else 0 end) as enero,
           SUM( Case extract(month from fecha) when 2 then cargo else 0 end) as febrero,
           SUM( Case extract(month from fecha) when 3 then cargo else 0 end) as marzo,
           SUM( Case extract(month from fecha) when 4 then cargo else 0 end) as abril,
           SUM( Case extract(month from fecha) when 5 then cargo else 0 end) as mayo,
           SUM( Case extract(month from fecha) when 6 then cargo else 0 end) as junio,
           SUM( Case extract(month from fecha) when 7 then cargo else 0 end) as julio,
           SUM( Case extract(month from fecha) when 8 then cargo else 0 end) as agosto,
           SUM( Case extract(month from fecha) when 9 then cargo else 0 end) as septiembre,
           SUM( Case extract(month from fecha) when 10 then cargo else 0 end) as octubre,
           SUM( Case extract(month from fecha) when 11 then cargo else 0 end) as noviembre,
           SUM( Case extract(month from fecha) when 12 then cargo else 0 end) as diciembre,
           SUM(Cargo) as Total
    FROM Registro
    WHERE EXTRACT(year from fecha)=:QUE_ANO
    GROUP BY Categoria
    INTO :CATEGORIA,
         :ENERO,
         :FEBRERO,
         :MARZO,
         :ABRIL,
         :MAYO,
         :JUNIO,
         :JULIO,
         :AGOSTO,
         :SEPTIEMBRE,
         :OCTUBRE,
         :NOVIEMBRE,
         ICIEMBRE,
         :TOTAL
  DO
  BEGIN
        /*Acumula los totales de cada mes*/
        TENERO     = TENERO     + ENERO;
        TFEBRERO   = TFEBRERO   + FEBRERO;
        TMARZO     = TMARZO     + MARZO;
        TABRIL     = TABRIL     + ABRIL;
        TMAYO      = TMAYO      + MAYO;
        TJUNIO     = TJUNIO     + JUNIO;
        TJULIO     = TJULIO     + JULIO;
        TAGOSTO    = TAGOSTO    + AGOSTO;
        TSEPTIEMBRE= TSEPTIEMBRE+ SEPTIEMBRE;
        TOCTUBRE   = TOCTUBRE   + OCTUBRE;
        TNOVIEMBRE = TNOVIEMBRE + NOVIEMBRE;
        TDICIEMBRE = TDICIEMBRE  + DICIEMBRE;
        TTOTAL     = TTOTAL + TOTAL;
    SUSPEND;
  END
  /*Devuelve ultimo registro con los totales*/
  CATEGORIA='TOTAL';
  ENERO     = TENERO ;
  FEBRERO   = TFEBRERO;
  MARZO     = TMARZO;
  ABRIL     = TABRIL;
  MAYO      = TMAYO;
  JUNIO     = TJUNIO;
  JULIO     = TJULIO ;
  AGOSTO    = TAGOSTO;
  SEPTIEMBRE= TSEPTIEMBRE;
  OCTUBRE   = TOCTUBRE;
  NOVIEMBRE = TNOVIEMBRE;
  DICIEMBRE= TDICIEMBRE;
  TOTAL     = TTOTAL;
  SUSPEND;
END

Espero te sirva
Saludos
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
No me sale esta consulta ¿Por que? rgstuamigo MySQL 3 02-02-2009 19:47:16
Está bien esta consulta Select count? enecumene MySQL 12 30-08-2007 03:54:29
Q tiene esta consulta ? Ryu SQL 4 26-04-2005 18:37:16
Que hace esta consulta agonzalez SQL 0 12-02-2004 20:30:29
Ayuda con esta consulta? danytorres SQL 1 10-10-2003 20:29:15


La franja horaria es GMT +2. Ahora son las 10:55:15.


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