Ampliar resultado de un query

26/01/2009 - 23:34 por Alonso Vilela | Informe spam
Amigos tengo una tabla que registar entradas y salidas de un producto, todo
esta funcioando bien, pero ahora necesito hacer un reporte que contenga
todos los tipos de toner por cada compania.

El query que adjunto da el resultado de la parte de abajo.donde muestra solo
los productos que la cia vendio, la idea es que en la tabal resulante se
muestre con cero el monto de la cia que no se tienes el producto.

Select s.id_toner,s.id_sup
,SUM(s.amount) as total

,t.supname

,t.name

from

(select

id_toner,id_sup

,SUM(amount) as amount

from

store

where

inout = 1

group by

id_sup,id_toner

union

Select

id_toner,

id_sup,

-SUM(amount) as amount

from

Store

where

inout = 0 and ret= 0

group by

id_sup,id_toner ) as s

inner join v_toner as t

on s.id_toner = t.Id_toner

and s.id_sup = t.Id_sup

where s.id_toner > 0

group by s.id_sup

,s.id_toner

,t.supname

,t.name

order by

s.id_sup

Result

id_toner id_sup total supname name
11 1 360 Toner Charge 4 Si
21 1 450 Toner Charge 5 Si
31 1 8910 Toner Charge 9050
11 4 100 TONER Y 4 Si
22 4 55 TONER Y 5 Si Jumbo
21 5 101 TONER X 5 Si
24 5 101 TONER X 5 Si Microtoner



Resultado deseado



algo como

id_toner id_sup total supname name
11 1 360 Toner Charge 4 Si
21 1 450 Toner Charge 5 Si
22 1 0 Toner Charge 5 Si Jumbo linea a
agregar

24 1 0 Toner Charge 5 Si Microtoner linea
a gregrar

31 1 8910 Toner Charge 9050


11 4 100 TONER Y 4 Si

21 4 0 TONER Y 5 Si linea a agregar
22 4 55 TONER Y 5 Si Jumbo

24 4 0 TONER Y 5 Si Microtoner linea a
agregar

31 4 0 TONER Y 9050 linea a agregar


11 5 0 TONER X 4 Si linea a agregar


21 4 0 TONER X 5 Si
22 4 55 TONER X 5 Si Jumbo linea a
agregar

24 4 101 TONER X 5 Si Microtoner

31 4 0 TONER X 9050 linea a agregar
Gracias
 

Leer las respuestas

#1 Carlos Sacristan
27/01/2009 - 09:19 | Informe spam
¿Cuál es la tabla que contiene la lista de todos los productos? ¿Es v_toner?
En ese caso, lo único que tienes que hacer es hacer un RIGHT JOIN con dicha
tabla y poner un ISNULL en la parte del SELECT principal. Algo como...

SELECT s.id_toner,s.id_sup
, ISNULL(SUM(s.amount), 0) as total
,t.supname
,t.name
FROM ...
RIGHT JOIN v_toner as t
on s.id_toner = t.Id_toner and s.id_sup = t.Id_sup


Un saludo
-
www.navento.com
Servicios de Localización GPS


"Alonso Vilela" wrote:

Amigos tengo una tabla que registar entradas y salidas de un producto, todo
esta funcioando bien, pero ahora necesito hacer un reporte que contenga
todos los tipos de toner por cada compania.

El query que adjunto da el resultado de la parte de abajo.donde muestra solo
los productos que la cia vendio, la idea es que en la tabal resulante se
muestre con cero el monto de la cia que no se tienes el producto.

Select s.id_toner,s.id_sup
,SUM(s.amount) as total

,t.supname

,t.name

from

(select

id_toner,id_sup

,SUM(amount) as amount

from

store

where

inout = 1

group by

id_sup,id_toner

union

Select

id_toner,

id_sup,

-SUM(amount) as amount

from

Store

where

inout = 0 and ret= 0

group by

id_sup,id_toner ) as s

inner join v_toner as t

on s.id_toner = t.Id_toner

and s.id_sup = t.Id_sup

where s.id_toner > 0

group by s.id_sup

,s.id_toner

,t.supname

,t.name

order by

s.id_sup

Result

id_toner id_sup total supname name
11 1 360 Toner Charge 4 Si
21 1 450 Toner Charge 5 Si
31 1 8910 Toner Charge 9050
11 4 100 TONER Y 4 Si
22 4 55 TONER Y 5 Si Jumbo
21 5 101 TONER X 5 Si
24 5 101 TONER X 5 Si Microtoner



Resultado deseado



algo como

id_toner id_sup total supname name
11 1 360 Toner Charge 4 Si
21 1 450 Toner Charge 5 Si
22 1 0 Toner Charge 5 Si Jumbo linea a
agregar

24 1 0 Toner Charge 5 Si Microtoner linea
a gregrar

31 1 8910 Toner Charge 9050


11 4 100 TONER Y 4 Si

21 4 0 TONER Y 5 Si linea a agregar
22 4 55 TONER Y 5 Si Jumbo

24 4 0 TONER Y 5 Si Microtoner linea a
agregar

31 4 0 TONER Y 9050 linea a agregar


11 5 0 TONER X 4 Si linea a agregar


21 4 0 TONER X 5 Si
22 4 55 TONER X 5 Si Jumbo linea a
agregar

24 4 101 TONER X 5 Si Microtoner

31 4 0 TONER X 9050 linea a agregar
Gracias



Preguntas similares