Podrías usar un procedimiento almacenado...
Te propongo esta alternativa:
Código SQL
[-]
create or alter procedure Router (
Usuario as Varchar(20))
returns(
Nombre as varchar(20),
Mes as integer,
Anio as integer,
Maximo as integer,
Total as integer)
as
declare variable MaxAnterior integer;
begin
MaxAnterior=0;
FOR Select
Nombre,
Extract(Month from Fecha) As Mes,
Extract(Year From Fecha) As Anio,
Max(BytesIn) As Maximo
From Consumo
Where Nombre=:Usuario
Group By Nombre, Extract(Month From Fecha), Extract(Year From Fecha)
Into :Nombre, :Mes, :Anio, :Maximo
do
begin
Total=Maximo - MaxAnterior;
MaxAnterior=Maximo;
suspend;
end
end
Este procedimiento recibe un parametro que es Usuario
Para usar este puedes hacerlo desde una consulta de la siguiente manera:
Código SQL
[-]
Select * From Router('roger')
No lo he probado, así que es posible que tenga errores. Me cuentas como va...
Saludos cordiales