Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Contar y sumar importes de firebird (https://www.clubdelphi.com/foros/showthread.php?t=79233)

MartinS 18-06-2012 13:57:08

Contar y sumar importes de firebird
 
Hola: Nuevamente a solicitar ayuda a ustedes.
El tema es el siguiente tengo una consulta que me arroja la emisión de pasajes de acuerdo a un rango de fecha estipulado y en el informe coloco los datos de quienes utilizaron el pasaje:


Código SQL [-]
Select Internos.Id,Apellidos,Nombres,FCrim, 
           Pasajes.Id,IdInt,NroOpp,Fecha,Salida,Destino,Importe, Empresa,
           Acomp_Pasaje.Id,IdPasaje,IdFamiliar,Titular,
           Asoc_Familiar.Id, IdFam,IdInt, Parentesco,
          Familiares.Id,ApellidoyNombres,NroDoc 
From Internos
Inner Join Pasajes on Internos.Id = Pasajes.IdInt
Inner Join Acomp_Pasaje on Pasajes.Id = Acomp_Pasaje.IdPasaje
Inner Join Asoc_Familiar on Acomp_Pasaje.IdFamiliar = Asoc_Familiar.Id
inner Join Familiares on Asoc_Familiar.IdFam = Familiares.Id

Group by Internos.Id,Apellidos,Nombres,FCrim,Pasajes.IdInt,NroOpp,Pasajes.Id,Fecha,NroOpp,Salida,Destino,Impo  rte,Empresa,
Acomp_Pasaje.Id,IdPasaje,IdFamiliar,Titular,Asoc_Familiar.Id,Asoc_Familiar.IdInt,IdFam,Parentesco,
Familiares.Id,ApellidoyNombres,NroDoc
Having
Pasajes.Fecha Between :FDesde and :FHasta

Ahora bien, lo que necesito es que al final del informe me de el total de pasajes y la suma total. Hice algo asi a partir de otra consulta porque no se como hacerlo a traves de la consulta anterior.

Código SQL [-]
Select Id,Fecha,Sum(importe) As Total, Count(NroOpp) As Cantidad from Pasajes
Where Fecha Between :Fdesde and :FHasta
Group by Id,Fecha

Como podrán apreciar la consulta anterior no agrupa nada ya que ID es unico y fecha tiene rango y es por eso que recurro a ustedes. Como podria hacer siendo que necesito la fecha para acotar los registros?

Saludos

Karzie 05-07-2012 21:30:56

Compute
 
Quizas puedas utilizar la clausula COMPUTE en SQL para realizar la suma. Sin embargo, si estos datos dato los utilizara con algun reporteador con Crystal Report o Reporting Services, en el mismo reporteador puedes generar los totales.

Ejemplo del Compute:

Código SQL [-]
Select Certificado, sum(Certificado) From dbo.AV_Datecnico
Group by Certificado
Compute SUM(Certificado)

MartinS 06-07-2012 01:31:35

Hola Karzie: Creo que el compute en firebird no existe por eso cree este hilo hace un tiempo.- Alguien dijo alguna vez de "Compute by" pero no tengo idea como utilizarlo. Con relacion a la sugerencia del reporteador es así precisamente como termine por hacerlo.

Gracias y saludos.-

ozsWizzard 09-07-2012 10:03:54

Na, mejor no he dicho na, voy a pensarlo un poco mejor

Para aclararme... Si la los totales los quieres sobre la primera select que has mostrado, has de hacerlo sobre ellos, supongo. Quizás algo así:

Código SQL [-]
Select Sum(Importe) As Total, Count(NroOpp) As Cantidad
From (Select Internos.Id,Apellidos,Nombres,FCrim, 
           Pasajes.Id,IdInt,NroOpp,Fecha,Salida,Destino,Importe, Empresa,
           Acomp_Pasaje.Id,IdPasaje,IdFamiliar,Titular,
           Asoc_Familiar.Id, IdFam,IdInt, Parentesco,
          Familiares.Id,ApellidoyNombres,NroDoc 
        From Internos
        Inner Join Pasajes on Internos.Id = Pasajes.IdInt
        Inner Join Acomp_Pasaje on Pasajes.Id = Acomp_Pasaje.IdPasaje
        Inner Join Asoc_Familiar on Acomp_Pasaje.IdFamiliar = Asoc_Familiar.Id
        inner Join Familiares on Asoc_Familiar.IdFam = Familiares.Id
        Group by Internos.Id,Apellidos,Nombres,FCrim,Pasajes.IdInt,NroOpp,Pasajes.Id,Fecha,NroOpp,Salida,Destino,Impo  rte,Empresa,
        Acomp_Pasaje.Id,IdPasaje,IdFamiliar,Titular,Asoc_Familiar.Id,Asoc_Familiar.IdInt,IdFam,Parentesco,
        Familiares.Id,ApellidoyNombres,NroDoc
        Having
        Pasajes.Fecha Between :FDesde and :FHasta)

ozsWizzard 09-07-2012 10:22:28

Se me olvidaba, en caso de que los "Inner join" no afecten al número de fila de Pasajes, una solución más efectiva sería esta:

Código SQL [-]
Select Sum(importe) As Total, Count(NroOpp) As Cantidad 
From Pasajes
Where Fecha Between :FDesde and :FHasta


La franja horaria es GMT +2. Ahora son las 17:52:35.

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