Ir al contenido


Foto

Unir consultas SQL en Firefird 2.5


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 01 marzo 2012 - 01:44

Hola Comunidad.
Estoy realizando una consulta que luego utilizaré en un reporte. (RAVE).

En primera instancia ya lo tendría solucionado pero me gustaría unificarlas para no utilizarla 2 veces.

Serian:

Consulta 1.

select  D.id ,C.detalle,C.fechaemision,Cuenta,Nombremovimiento,D.Importe, 

CASE debehaber WHEN 'D' THEN d.IMPORTE END AS DEBE,
CASE debehaber WHEN 'H' THEN d.IMPORTE END AS HABER

from MOVIMIENTOCABECERA C JOIN MOVIMIENTODETALLE D ON D.ID = C.ID
order by D.id,debehaber asc


La cual, me da este resultado correctamente:

Imagen Enviada


Consulta 2.

select count (*), count (distinct(id))from  
(select  D.id ,C.detallE,C.fechaemision,cuenta,nombremovimiento,d.Importe,

CASE debehaber WHEN 'D' THEN d.IMPORTE END AS DEBE,
CASE debehaber WHEN 'H' THEN d.IMPORTE END AS HABER

from MOVIMIENTOCABECERA C JOIN MOVIMIENTODETALLE D ON D.ID = C.ID
order by D.id,debehaber asc)


La cual me da correctamente, los 2 resultados.



La idea seria unirlas de ser posible.

pd: ahora que estoy escribiendo, se me ocurre, hacer la consulta1 y con el resultado, llamar la consulta2.


¿Ideas, sugerencias, etc?  :embarrassed:


Gracias, Nikolas  :wink:


  • 0

#2 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 01 marzo 2012 - 02:34

Hola Comunidad...

...pd: ahora que estoy escribiendo, se me ocurre, hacer la consulta1 y con el resultado, llamar la consulta2...

Pues sí, es la aproximación más correcta, o de plano, verte más "nice" y meterlo dentro de un Stored Procedure que te devuelva los datos requeridos.
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 01 marzo 2012 - 05:54

.......

pd: ahora que estoy escribiendo, se me ocurre, hacer la consulta1 y con el resultado, llamar la consulta2.


¿Ideas, sugerencias, etc?  :embarrassed:


Gracias, Nikolas  :wink:



Últimamente las respuestas a las preguntas se las da la misma persona que hace dicha pregunta  ^o|... pero tu amigo Nikolas hasta te autoagradeces  :D  :D  :D  (y)  (y)  (y)

Jejejeje

Saludox  ! :)

  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 02 marzo 2012 - 07:17

Supongo que andas creando alguna salida tipo extracto contable... te cuento como lo hacemos por aqui:

Usamos un excute block para que nos de ya las dos columnas debe/haber calculadas (usando iif en lugar de case) y en ese execute block añadimos unas columnas de "saldo" calculadas donde vamos acumulando. Aparte, el filtro que queramos aplicar al extracto se lo pasamos a este procedure como un parametro de texto, y el saldo inicial tambien (por si pieden extracto desde mitad de ejercicio).

La cosa queda asi (elimino muchas cosas -campos- que no vienen a cuento, tu le añades todo lo que necesites):


CREATE PROCEDURE EXTRACTO (
    CLAUSULA Varchar(600),
    SALDOINICIAL Numeric(15,2) )
RETURNS (
    DEBE Numeric(15,2),
    HABER Numeric(15,2),
    SALDO Numeric(15,2),
    PARCIAL Numeric(15,2),
    CUENTA Varchar(10) )
AS
BEGIN
  parcial= 0;
  for execute statement 'SELECT p.cuenta, '||
      ' iif(p.debehaber=''D'',p.importe,0) Debe, '||
      ' iif(p.debehaber=''D'',0,p.importe) Haber,
      ' from Apunte p '||
      ' left join Asiento a on p.idasiento=a.idasiento '|| clausula
      into :cuenta, :debe, :haber
    do begin
      parcial= parcial + debe - haber;
      saldo= SaldoInicial + Parcial;
      suspend;
    end
END


Una vez tienes este procedure, ya lo usas como si debe, haber, saldo y parcial fuesen campos normales, no te preocupas de ellos nunca jamas.
  • 0

#5 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 02 marzo 2012 - 02:14

Gracias a todos.

Lo solucione utilizando la primer consulta más contadores del Rave Report.

Saludos, Nikolas.  :wink:


  • 0




IP.Board spam blocked by CleanTalk.