Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 26-01-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo lo haría así:

Código SQL [-]
create procedure ventas_crece_por_mescontado (
    anio smallint)
returns (
    nombremes varchar(25),
    monto_ventas numeric(12,2),
    monto_crecimiento numeric(12,2),
    crecimiento numeric(12,2))
as
declare variable mes smallint;
declare variable monto_totalnc numeric(12,2);
declare variable mes_anterior numeric(12,2);
begin
    -- Inicializo variables
    mes_anterior = 0;
    mes = 1;

    while (mes <= 12) do
    begin
        -- Calculo nombre de mes
        nombremes = decode(mes, 1, 'ENE', 2, 'FEB', 3, 'MAR', 4, 'ABR', 5, 'MAY', 6, 'JUN', 7, 'JUL', 8, 'AGO', 9, 'SEP', 10, 'OCT', 11, 'NOV', 12, 'DIC');

        -- Calculo FACTURAS.MONTOTOTAL
        select sum(f.montototal)
        from facturas_ventas f
        where
        extract(month from f.fecha) = :mes and
        extract(year from f.fecha) = :anio
        into :monto_ventas;

        -- Calculo NOTAS_CREADITOS.IMPORTE_TOTAL
        select sum(n.importe_total)
        from notas_creditos n
        where
        extract(month from n.fecha_actual) = :mes and
        extract(year from n.fecha_actual) = :anio
        into :monto_totalnc;

        -- Limpio datos
        monto_ventas = coalesce(monto_ventas, 0.00);
        monto_totalnc = coalesce(monto_totalnc, 0.00);

        -- Calculo MONTO_VENTAS
        monto_ventas = (monto_ventas - coalesce(monto_totalnc, 0.00));

        -- Calculo importe de crecimiento / decrecimiento
        monto_crecimiento = mes_anterior - monto_ventas;

        -- Calculo porcentaje de crecimiento / decrecimiento
        crecimiento = 0;
        if (monto_ventas <> 0) then
            crecimiento = (1 - (mes_anterior / monto_ventas)) * 100;

        -- Guardo MONTO_VENTAS para siguente vuelta del bucle con informacion del mes anterior
        mes_anterior = monto_ventas;

        -- Devuelvo datos para el mes
        suspend;

        mes = mes + 1;
    end
end;

Última edición por duilioisola fecha: 26-01-2023 a las 19:38:51.
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
duda con procedimiento almacenado danielscorpio MySQL 0 23-01-2006 16:30:54
De aritmética muy elemental roman Humor 3 27-05-2004 22:22:51
De aritmética roman Humor 14 27-05-2004 19:02:55
procedimiento almacenado duda ronson Firebird e Interbase 10 19-02-2004 13:16:40
duda con procedimiento Markoz Firebird e Interbase 1 01-07-2003 00:26:56


La franja horaria es GMT +2. Ahora son las 12:19:22.


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