Restar campos en Oracle

Álex quería saber si se pueden restar dos columnas de dos consultas en oracle.. Es decir yo hago una consulta que me devuelve 3 campos: UNIDADES, DESCRIPCIÓN, IMPORTE, luego hago otra consulta que me devuelve los mismos 3 campos (UNIDADES, DESCRIPCIÓN E IMPORTE) con distintos valores y distinto número de registros.
Lo que quería saber es si yo puedo hacer una consulta en la que se resten las unidades de una columna con las unidades de la otra, es decir si yo tengo en el primer registro de la primera consulta 5 unidades y en el primer registro de la segunda consulta 2 unidades entonces el valor que me daría la consulta resultante en su primer registro sería 3 unidades, si en el segundo registro tengo 7 y 3, entonces en el segundo registro de la consulta resultante tendría 4 y así sucesivamente (ojo las dos consultas no tienen por que tener el mismo numero de registros. Si una consulta tiene 5 registros y otra tiene 4 entonces en el quinto registro de la consulta resultante sólo tendríamos el numero de unidades de la consulta que tiene 5 registros
¿Se puede hacer esa consulta que me devuelva la resta?

1 Respuesta

Respuesta
1
Debes tener en las consultas, un campo que nos permita unir un registro con otro de la otra consulta, por ejemplo:
La consulta 1 nos devuelve
Id= 1, unidades= 3, descripcion= xxx y importe =100
Id= 2, unidades= 1, descripcion= yyy y importe =120
Id= 3, unidades= 2, descripcion= zzz y importe =12
La consulta 2 nos devuelva
Id= 1, unidades= 1, descripcion= xxx y importe =200
Id= 2, unidades= 1, descripcion= yyy y importe =20
Teniedo esto haces una consulta union y agrupada
Select Id, Sum(unidades), Max(Descripcion) , Sum(importe)
From (
Select Id, Unidades, descripcion, importe
FRom Consulta1
Union All
Select Id, Unidades, descripcion, importe
FRom Consulta2) as Reg
Group by Id
Esto te sumara los registros que tienen el mismo id.
Bueno Alex no era eso exactamente lo que quería, ya que te he dicho RESTAR COLUMNAS, no sumarlas, de todas formas ya lo he resuelto utilizando el OUTER JOIN...
De todas formas muchas gracias !
Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas