SQL - Integrar 3 consultas diferentes en una sola consulta

 
Vista:
Imágen de perfil de RENZO

Integrar 3 consultas diferentes en una sola consulta

Publicado por RENZO (7 intervenciones) el 15/03/2017 22:20:32
Tengo tres consultas diferentes, que los quiero unir para que me salga la informacion en una sola consulta, ya que cuando utilizo el parametro UNION, las consulta me salen en forma vertical.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
select
casoid,
'FACTURA_IGV',
SUM (neto) as [FACTURA IGV]
from (
select distinct
e.neto,
b.casoId,
numeroFactura,
e.facturaid
from Siniestro a
inner join Caso b on a.siniestroid = b.siniestroId
inner join CartaGarantia c on b.casoId = c.casoId
inner join FacturaCartaGarantia d on c.cartaGarantiaId =  d.cartaGarantiaId
inner join Factura e on d.facturaId = e.facturaId
)
as fact
where casoId = 31367
group by casoid



1
2
3
4
5
6
7
8
9
select
casoid,
'REMBOLSO',
sum (neto) as [Rembolso]
from
(select DISTINCT * from rembolso where estadorembolso = 'Aprobado')
as REMBOLSO
where casoid = 31367
group by casoid



1
2
3
4
5
6
7
8
9
select
casoid,
'CG_APROBADO',
sum (monto) as [CG APROBADO]
from (
select DISTINCT * from CartaGarantia where estado = 'aprobado' )
as CG
where casoId = 31367
group by casoid


Mi idea es que las consultas salgan segun la fecha de la tabla de. SINIESTRO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Integrar 3 consultas diferentes en una sola consulta

Publicado por leonardo_josue (1173 intervenciones) el 16/03/2017 15:56:53
Hola Renzo:

Sin datos y sin conocer la estructura de tus tablas o el resultado de tus consultas tal como las tienes, es complicado (sino imposible) tratar de ayudarte, pues sólo Dios y Tú lo saben.

Comienza por postear la estructura de tus tablas y pon 2 o 3 registros de ejemplo. De igual manera puedes decirnos qué te arroja cada una de las consultas y cómo esperas unirlas, de esta manera será más factible que podamos decirle cómo hacerlo.

Tampoco olvides mencionar con qué DBMS estás trabajando, pues aunque todos los motores tienen una sintaxis similar, también es cierto que hay diferencias importantes entre cada uno de ellos.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de RENZO

Integrar 3 consultas diferentes en una sola consulta

Publicado por RENZO (7 intervenciones) el 16/03/2017 21:50:41
Hola que tal ..... he modificado la consulta para que todo me salga en una consulta (lo estoy adjuntando),

lo que quiero es que me salga una suma de los campos b.reservadiscapacidad as [Reserva_Discapacidad_Real S/.],
b.reservagastoMedico as [Reserva_Medico_Real S/.] y e.neto as [Factura S/.]

,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Felipe De Jesús
Val: 6
Ha disminuido su posición en 6 puestos en SQL (en relación al último mes)
Gráfica de SQL

Integrar 3 consultas diferentes en una sola consulta

Publicado por Felipe De Jesús (2 intervenciones) el 16/03/2017 16:09:59
La respuesta ya la tienes amigo, viendo tu primera tabla es una guia para hacer la consulta triple en una sola. Esto lo haces con doble join y en el Select pones tras tablas a consultar y despues usas el where para condicionar el el resultado de las consulta. Pero recomiendo que antes lo intentes tu, si no puedes ya te ayudamos ya que lo que quieres es:

'FACTURA_IGV', 'REMBOLSO' y 'CG_APROBADO', y el where pides solo el codigoId pero que los muestre por fechas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de RENZO

Integrar 3 consultas diferentes en una sola consulta

Publicado por RENZO (7 intervenciones) el 16/03/2017 22:00:42
gracias por el consejo.... ya resolvi solo la mitad .... si me pudieras dar una manito .... ahora lo he juntado las 3 consultas en una ... el problema es que quieros sumar los campos :

SUM (e.neto) as [Factura S/.],
SUM (f.neto) as [Rembolso S/.],
SUM (c.monto) as [CG. Aprobadas S/.]


aqui te envio toda la consulta por corregir..... si funciona correctamente la subconsulta .....


select
b.casoid,
a.numeropoliza,
a.fechaSiniestro,
b.nombreAccidentado,
b.reservadiscapacidad as [Reserva_Discapacidad_Real S/.],
b.reservagastoMedico as [Reserva_Medico_Real S/.] ,
SUM (e.neto) as [Factura S/.],
SUM (f.neto) as [Rembolso S/.],
SUM (c.monto) as [CG. Aprobadas S/.]
from
(
select distinct
b.casoid,
a.numeropoliza,
a.fechaSiniestro,
b.nombreAccidentado,
b.reservadiscapacidad as [Reserva_Discapacidad_Real S/.],
b.reservagastoMedico as [Reserva_Medico_Real S/.] ,
e.neto as [Factura S/.],
--b.casoId,
--e.numeroFactura,
--e.facturaid,
--f.Rembolsoid,
f.neto as [Rembolso S/.],
c.monto as [CG. Aprobadas S/.]
from Siniestro a
inner join Caso b on a.siniestroid = b.siniestroId
inner join CartaGarantia c on b.casoId = c.casoId
inner join FacturaCartaGarantia d on c.cartaGarantiaId = d.cartaGarantiaId
inner join Factura e on d.facturaId = e.facturaId
full join Rembolso f on b.casoId = f.casoId
)
as CUALQUIERCOSA
where a.fechaSiniestro between '01-01-2017' and '31-01-2017'
group by b.casoid,a.numeropoliza,a.fechaSiniestro,b.nombreAccidentado,b.reservadiscapacidad,b.reservagastoMedico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de RENZO

Integrar 3 consultas diferentes en una sola consulta

Publicado por RENZO (7 intervenciones) el 18/03/2017 18:48:57
ya lo resolvi..... este es el resultado:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
with resultado as
(
select distinct
b.casoid,
a.numeropoliza,
a.fechaSiniestro,
b.nombreAccidentado,
b.reservadiscapacidad as [Reserva_Discapacidad_Real],
b.reservagastoMedico as [Reserva_Medico_Real] ,
e.neto as [Monto_Factura],
--b.casoId,
--e.numeroFactura,
--e.facturaid,
--f.Rembolsoid,
f.neto as [Rembolso],
c.monto as [CG_Aprobadas],
c.estado
from Siniestro a
inner join Caso b on a.siniestroid = b.siniestroId
full join CartaGarantia c on b.casoId = c.casoId
inner join FacturaCartaGarantia d on c.cartaGarantiaId = d.cartaGarantiaId
inner join Factura e on d.facturaId = e.facturaId
full join Rembolso f on b.casoId = f.casoId
group by b.casoid,a.numeropoliza,a.fechaSiniestro,b.nombreAccidentado,b.reservadiscapacidad,b.reservagastoMedico,e.neto,f.neto,c.monto,c.estado
--order by c.estado, a.fechaSiniestro
)
select
casoid,
numeropoliza,
fechasiniestro,
nombreAccidentado,
reserva_discapacidad_real as [Reserva discapacidad Real S/.],
reserva_medico_real as [Reserva Medico Real],
sum (monto_factura) as [Monto Factura S/.],
sum (Rembolso) as [Monto Rembolso S/.],
sum (cg_aprobadas) as [Monto CG_Aprobadas S/.]
from resultado
where fechaSiniestro between '01-01-2017' and '31-01-2017'
group by
casoid,
numeropoliza,
fechasiniestro,
nombreAccidentado,
reserva_discapacidad_real,
reserva_medico_real
order by numeroPoliza
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Felipe De Jesús
Val: 6
Ha disminuido su posición en 6 puestos en SQL (en relación al último mes)
Gráfica de SQL

Integrar 3 consultas diferentes en una sola consulta

Publicado por Felipe De Jesús (2 intervenciones) el 18/03/2017 19:52:30
Que bien ya te salio y le mejor que, pones la solucion asi ayudas a mas personas con el mismo problema muy bien.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de RENZO

Integrar 3 consultas diferentes en una sola consulta

Publicado por RENZO (7 intervenciones) el 21/03/2017 23:51:10
...ahora tengo una pequeña dificultad:

le explico con el query



with resultado as -----> aqui creo el nombre de la consulta temporal
(
select DISTINCT
b.casoid,
a.numeropoliza,
a.fechaSiniestro,
a.numeroPlaca,
b.nombreAccidentado,
b.reservadiscapacidad as [Reserva_Discapacidad_Real],
b.reservagastoMedico as [Reserva_Medico_Real] ,
e.neto as [Monto_Factura],
e.estadoFactura,
e.facturaId,
--b.casoId,
--e.numeroFactura,
--e.facturaid,
--f.Rembolsoid,
f.neto as [Rembolso],
f.estadoRembolso,
c.monto as [CG_Aprobadas],
c.numeroCartaGarantia,
c.estado
from Siniestro a
full join Caso b on a.siniestroid = b.siniestroId
full join CartaGarantia c on b.casoId = c.casoId
full join FacturaCartaGarantia d on c.cartaGarantiaId = d.cartaGarantiaId
full join Factura e on d.facturaId = e.facturaId
full join Rembolso f on b.casoId = f.casoId
--WHERE (a.fechaSiniestro between '01-01-2017' and '31-01-2017') --OR (c.estado = 'apagado')
group by b.casoid,a.numeropoliza,a.fechaSiniestro,a.numeroPlaca,b.nombreAccidentado,b.reservadiscapacidad,b.reservagastoMedico,e.neto,e.estadoFactura,e.facturaId,f.neto,f.estadoRembolso,c.monto,c.numeroCartaGarantia,c.estado
--order by A.NUMEROPLACA
)
select
--casoid,
numeropoliza,
fechasiniestro,
numeroplaca,
nombreAccidentado,
reserva_discapacidad_real as [Reserva discapacidad Real S/.],
reserva_medico_real as [Reserva Medico Real S/.],
Sum( distinct Case estadoFactura When 'aprobado' Then Monto_Factura Else 0 End ) As [Monto Factura S/.], ----> el error es que suma pero solo los montos diferentes (como se sabe hay montos iguales en cualquier compra)
--sum (monto_factura) as [Monto Factura S/.],
Sum( distinct Case estadorembolso When 'aprobado' Then Rembolso Else 0 End ) As [Monto Factura S/.], ----> el error es que suma pero solo los montos diferentes (como se sabe hay montos iguales en cualquier rembolso)
--sum (Rembolso) as [Monto Rembolso S/.],
--sum (cg_aprobadas) as [Monto CG_Aprobadas S/.]
Sum(distinct Case estado When 'Aprobado' Then CG_Aprobadas Else 0 End) As [Monto CG_Aprobadas S/.] ----> el error es que suma pero solo los montos diferentes (como se sabe hay montos iguales en cualquier caso)
--estado
from resultado
where fechaSiniestro between '30-07-2016' and '30-07-2016'
group by
--casoid,
numeropoliza,
fechasiniestro,
numeroplaca,
nombreAccidentado,
reserva_discapacidad_real,
reserva_medico_real
--estadofactura,
--estadorembolso
--estado
order by numeroPlaca

---------------------------------------------
Lo que quiero es sumar solamente los que tengan id unico.... no importa si los montos son iguales ..... cuando retiro (o no esta) el distinct, las sumas se aumentan... ya que por cada factura tiene 1 a varias cartas de garantia ....... esto lo quiero que se realice en el campo de la consulta temporal ..

Ademas solo tienen que sumas los montos que tengan es estado de ' APROBADO' .....

Gracias por su apoyo .....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar