Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sum de una Union en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=48895)

Daniel_ASV 07-10-2007 06:43:48

Sum de una Union en Firebird
 
Hola compañeros estoy queriendo sumar unos importes que tengo en una union de dos tablas pero solo me regresa una sola suma.

Alguien sabe como puedo obtener la suma de las sumas de estas dos tablas:

Código SQL [-]
select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
from RECIBOSCAJA 
where 
  SUCURSALAFECTADA=:SA and
  IDAFECTADA=:ID and
  DOCUMENTOAFECTADO=:DOCTO
group by DOCUMENTOAFECTADO
union select DOCUMENTOAFECTADO, sum(IMPORTE)
from notascredito
where
  SUCURSALAFECTADA=:SA and
  IDAFECTADA=:ID  and
  DOCUMENTOAFECTADO=:DOCTO
group by DOCUMENTOAFECTADO

Encontre que en SQL Server se pone

Código SQL [-]
Select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
from (Aquí adentro la consulta anterior) as Todas 
group by DOCUMENTOAFECTADO

Pero no me funciono en firebird marca token unknown en el parentesis espero que me puedan ayudar con esta consulta

pcicom 07-10-2007 17:35:18

prueba con esto
Código SQL [-]
      select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
           from RECIBOSCAJA  group by DOCUMENTOAFECTADO
   UNION   
      select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
           from notascredito group by DOCUMENTOAFECTADO
      where 
          SUCURSALAFECTADA=:SA and
          IDAFECTADA=:ID and
          DOCUMENTOAFECTADO=:DOCTO

Tambien si es un comando muy comun de uso puedes crear una VISTA


Código SQL [-]
    CREATE VIEW v_AFECTADO (
        DOCUMENTOAFECTADO,
        IMPORTE)

    AS (
      select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
           from RECIBOSCAJA  group by DOCUMENTOAFECTADO
     UNION   
          select DOCUMENTOAFECTADO, sum(IMPORTE) as sumabonos
              from notascredito group by DOCUMENTOAFECTADO
      )


Ya luego la LLamarias como

Código SQL [-]
    SELECT * from V_AFECTADO
      where 
          SUCURSALAFECTADA=:SA and
          IDAFECTADA=:ID and
          DOCUMENTOAFECTADO=:DOCTO


Una de las consideraciones importantes cuando se hacen uniones es que deben de tener campos del mismo tipo y del mismo nombre..

Daniel_ASV 07-10-2007 21:28:31

Gracias por responder, nomas que la solución que estaba buscando no era lo que necesitaba, resulta que habian en ambas tablas unos registros con los mismos valores y solo me regresaba uno. Para que me regresara todos solo tenia que agregarle all despues de union con eso se resolvio el problema, pero gracias de todas formas.


La franja horaria es GMT +2. Ahora son las 04:47:54.

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