Oracle - 2 Select con group by, como juntarlas

 
Vista:

2 Select con group by, como juntarlas

Publicado por Milor (3 intervenciones) el 25/05/2009 00:19:16
Tengo estas dos select:

select sum(lf.precioventa * lf.cantidadvendida) TOTFAC
from cabfacturas cabf, lineasfactura lf
where cabf.nfactura = lf.nfactura
group by cabf.codigocliente
order by TOTFAC desc

select sum(la.precioventa * la.cantidadvendida) TOTALB
from cabalbaran caba, lineasalbaran la
where caba.nalbaran = la.nalbaran
group by caba.codigocliente
order by TOTALB desc

El total de facturas (por cliente) y el total de albaranes (por cliente) [Una fila por cada cliente]

A mi me interesaría la select que devuelve TOTAL ALB, TOTAL FAC por cliente. He probado varias cosas... pero los valores que me da, no cuadran.

Es para mostrarlo por PHP......

existe un table de clientes con codigo... (aunque no creo que haga falta)

ESTO ES LO QUE PROBE YO:

select cabf.codigocliente, cab.codigocliente, sum((lf.precioventa * lf.cantidadvendida) + (la.precioventa * la.cantidadvendida)) TOTFAC
from cabfacturas cabf, lineasfactura lf, cabalbaran cab, lineasalbaran la
where cabf.nfactura = lf.nfactura and cab.nalbaran = la.nalbaran and cabf.codigocliente = cab.codigocliente
group by cabf.codigocliente, cab.codigocliente
order by TOTFAC desc

Y luego este:

select cli.codigo, sum((lf.precioventa * lf.cantidadvendida) + (la.precioventa * la.cantidadvendida)) TOTFAC
from cabfacturas cabf, lineasfactura lf, cabalbaran cab, lineasalbaran la, clientes cli
where cabf.nfactura = lf.nfactura and cab.nalbaran = la.nalbaran and cabf.codigocliente = cli.codigo and cli.codigo = cab.codigocliente
group by cli.codigo
order by TOTFAC desc

Un desastre XD
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

RE:2 Select con group by, como juntarlas

Publicado por Rodrigo (102 intervenciones) el 26/05/2009 22:18:25
Pruena este codigo.

select cliente , sum(TOTFAC) TOTFAC, sum(TOTALB) TOTALB from (
select cabf.codigocliente cliente, sum(lf.precioventa * lf.cantidadvendida) TOTFAC, 0 TOTALB
from cabfacturas cabf, lineasfactura lf
where cabf.nfactura = lf.nfactura
group by cabf.codigocliente
union
select caba.codigocliente cliente, 0 TOTFAC, sum(la.precioventa * la.cantidadvendida) TOTALB
from cabalbaran caba, lineasalbaran la
where caba.nalbaran = la.nalbaran
group by caba.codigocliente )
group by cliente
order by cliente
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

RE:2 Select con group by, como juntarlas

Publicado por Milor (3 intervenciones) el 26/05/2009 22:47:49
Parece que funciona bien.... lo cambie a:

select cliente , sum(TOTFAC + TOTALB) TOTAL from (
select cabf.codigocliente cliente, sum(lf.precioventa * lf.cantidadvendida) TOTFAC, 0 TOTALB
from cabfacturas cabf, lineasfactura lf
where cabf.nfactura = lf.nfactura
group by cabf.codigocliente
union
select caba.codigocliente cliente, 0 TOTFAC, sum(la.precioventa * la.cantidadvendida) TOTALB
from cabalbaran caba, lineasalbaran la
where caba.nalbaran = la.nalbaran
group by caba.codigocliente )
group by cliente
order by TOTAL desc ;

Haber si entiendo el codigo... pero impresienante.
Por lo que veo... creas las dos select dandole un alia a las columnas (cliente para hacer el group by), y los sumatorias, eso lo usa para un subconsulta, y el union de deduzco que junta dos tablas por lo campo iguales.

Pues luego mirare si me dan lo mismo resultados, pero gracias...

Hay alguna manera de hacer un BETWEEN GRANDE and PEQUEÑO o otro comando?
O solo es BETWEEN PEQUEÑO and GRANDE?
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

RE:2 Select con group by, como juntarlas

Publicado por Milor (3 intervenciones) el 26/05/2009 23:31:09
Me respondo yo la pregunta:

select *
from dual
where to_date('25/05/09', 'dd/mm/yy') < to_date('26/05/09', 'dd/mm/yy');

Si da fila es correcto si no es incorrecto ^^
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