SQL Server - Clausula UNION

 
Vista:

Clausula UNION

Publicado por Maria Jose (10 intervenciones) el 14/07/2008 16:49:48
Hola a todos,

Por favor necesito su ayuda... Estoy haciendo dos select para unirlos en una sola clausula y colocarlos en una vista. Tengo lo siguiente:

Select tabla1.Codigo, Sum(tabla2.Monto), Sum(tabla2.Cantidad), '' as mto2
FROM Tabla1, Tabla2
WHERE tabla1.codigo = tabla2.codigo
GROUP BY tabla1.codigo

Y el segundo select es

Select tabla1.Codigo, '' as monto, '' as cantidad, Sum(tabla3.monto) as mto2
FROM Tabla1, Tabla3
WHERE tabla1.codigo = tabla3.codigo
GROUP BY tabla1.codigo

El problema esta que cuando UNO esos dos SELECT (por la clausula UNION) el resultado es el siguiente:

Codigo Monto Cantidad mto2
01 10 1 0
01 0 0 25.3
02 30 3 0
02 0 0 75.23
03 45 4 0
03 0 0 10.23

Al ver este resultado puedo observar que los valores NULOS NO LOS SUSTITUYE por los montos de la primera sentencia SQL sino que los deja igual y me repite el registro

La idea es que me quite los campos que estan en CERO o NULO y me los sustituya por el campo que tiene el valor. Es decir:

Codigo Monto Cantidad Mto2
01 10 1 25.3
02 30 3 75.23
03 45 4 10.23

Agradezco muchisimo la ayuda que puedan brindarme

Saludos,
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:Clausula UNION

Publicado por pacopaz (131 intervenciones) el 14/07/2008 18:45:51
Lo que necesitas no es un union, si no un sólo query que traiga los valores de las 3 tablas. Algo así:

Select tabla1.Codigo, Sum(tabla2.Monto), Sum(tabla2.Cantidad), isnull(sum(tabla3.Monto), 0) as mto2
FROM Tabla1 inner join Tabla2 on tabla1.codigo = tabla2.codigo left join Tabla3 on tabla1.codigo = tabla3.codigo
GROUP BY tabla1.codigo

Pongo el left join, para que asegure que los montos de la tabla2 siempre se vean, aunque no tengas los montos de la tabla3. Si en la tabla3 no tuvieras montos, entonces devuelve el valor de 0 al alias mto2.

Espero que te sirva.

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