Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Unir consultas...

Estas en el tema de Unir consultas... en el foro de SQL Server en Foros del Web. Hola q tal!! Creo q no me refiero a union... Tengo dos consultas, la primera me da resultado: id1 - id2 - CantidadOriginal 35 - ...
  #1 (permalink)  
Antiguo 09/06/2010, 19:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Unir consultas...

Hola q tal!! Creo q no me refiero a union...
Tengo dos consultas, la primera me da resultado:
id1 - id2 - CantidadOriginal
35 - 1 - 1000000.00
La segunda:
id1 - id2 - CantidadModificada
34 - 1 - 1000000.00
35 - 1 - 3000000.00

Eso de arriba es q habia un registro '35' con cantidad 1000000.00 y se cambio a 3000000.00 y además se inserto uno nuevo '34' con 1000000.00....
Necesito restar y sacar el valor absoluto (ABS) de las cantidades
Algo así:
id1 - id2 - Monto
34 - 1 - 1000000.00
35 - 1 - 2000000.00

Creo q es muy básico y espero puedas ayudarme...
Saludos y gracias!!
  #2 (permalink)  
Antiguo 10/06/2010, 08:14
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Unir consultas...

Necesitas usar un right join entre tus 2 consultas, tambien la funcion ISNULL al momento de restar.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 10/06/2010, 08:14
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Unir consultas...

Quieres sacar el monto total??? LA DIFERENCIA??? o quieres que tu consulta salga como lo has mostrado al final???... si quieres sacar la DIFERENCIA
Código SQL:
Ver original
  1. SELECT SUM(monto) monto
  2. FROM(  SELECT monto
  3.            FROM Tabla
  4.            WHERE Id1= 34
  5.            UNION ALL
  6.            SELECT monto*-1
  7.            FROM Tabla
  8.            WHERE Id1=35
  9.        ) AS kk

Pero si quieres que te salga como muestras al final ya es un poco mas trabajoso... dejame pensar un poquito mas... :D Saludos
  #4 (permalink)  
Antiguo 10/06/2010, 09:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Unir consultas...

Gracias por sus respuestas.... lo voy a checar en este momento...
Y sí, quiero la diferencia, pero absoluta, para que no importe si la cantidad aumentó o disminuyó, pero ademas, si se agregó una nueva cantidad, esta pase directamente.....
Seria algo asi:

Consulta 1 original
id1 - id2 - CantidadOriginal
35 - 1 - 5.00

Consulta 2 modificacion

id1 - id2 - CantidadModificada
34 - 1 - 1.00
35 - 1 - 7.00

id1 - id2 - Monto
34 - 1 - 1.00
35 - 1 - 2.00

En el id1 -> 35 el monto aumentó (pero también puede disminuir, y para este caso el id2 es informativo), entonces resto los montos con y saco el absoluto (por q puede ser negativo, pero sólo necesito saber a cuánto creció o disminuyó). Y ademas, se inserto un nuevo registro, el 34, que no está en la consulta original, esos registros nuevos necesito que pasen al resultado intactos...
  #5 (permalink)  
Antiguo 10/06/2010, 11:30
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Unir consultas...

Amigo y porque no haces una Tbala de Incidencias... donde reportes cada entrada... que Aumenta o Disminuye...
imaginate..

el dia 1 tienes 200
- restas 8 = 192 (aqui si sabes cuanto disminuyo)
- suma 16 = 208 (contra que lo vas a comparar??? contra el valor anterior??? o con el valor que comenzo el dia...)

mejor has una tabla de incidencias... donde te registre... dias por dia... Entrada por Entrada y la Direccion de la cantidad... asi podrias saber hasta LA ENTRADA N tenia X CANTIDAD... etc...

Saludos es una idea... espero te sirva
  #6 (permalink)  
Antiguo 10/06/2010, 15:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Unir consultas...

Bueno, la idea es como llevar un historial i compararlo, actualizando y todo, pero necesito mostrar los cambios... he hecho algo parecido a esto:
Tengo la consulta1 y la consulta2 con los resultados que ya puse.... entonces, a la consulta oroginal le resto lo q tenga la modificada
Código:
Select id1, id2, abs(CantidadModificada - (Select CantidadOriginal consulta1)),  as Total , CantidadModificada
consulta2
De esta manera.... al id1 -> 35 le quita la cantidad a la otra consulta con el id1 -> 35, en caso que una tabla traiga un id q no existe, solo elijo mostrar la cantidadModificada.
Qedaria así:
id1---id2----total----------------original
34 ----1 ----0.00 --------------- 1000000.00
35 ----1 ----2000000.00 ----------3000000.00

Me da el registro nuevo y la resta del modificado
  #7 (permalink)  
Antiguo 10/06/2010, 15:33
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Información Respuesta: Unir consultas...

Código SQL:
Ver original
  1. SELECT t2.id1, t2.id2, ABS(t2.CantidadModificada - ISNULL(t1.CantidadOriginal,0))
  2. FROM consulta1 t1
  3. RIGHT JOIN consulta2 t2 ON t1.id1 = t2.id1 AND t1.id2 = t2.id2
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: abs, consulta, operaciones, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.