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

Union de dos consultas o restar dos tablas

Estas en el tema de Union de dos consultas o restar dos tablas en el foro de SQL Server en Foros del Web. Buenas tardes a todos, tengo un problema con una consulta, lo que pasa es que me pidieron averiguar todos los items vendidos en un periodo ...
  #1 (permalink)  
Antiguo 05/05/2014, 14:51
 
Fecha de Ingreso: abril-2014
Ubicación: Bogota
Mensajes: 14
Antigüedad: 10 años, 7 meses
Puntos: 0
Union de dos consultas o restar dos tablas

Buenas tardes a todos,

tengo un problema con una consulta, lo que pasa es que me pidieron averiguar todos los items vendidos en un periodo de tiempo ya logre hacerlos con la siguiente consulta:

Código SQL:
Ver original
  1. SELECT V.ItemCode AS CODIGO_ITEM, V.Dscription, SUM(V.Quantity)AS TOTAL_VENDIDOS, S.whsname AS BODEGA,W.OnHand AS EN_STOCK
  2. FROM INV1 V
  3. INNER JOIN OITW W ON V.ItemCode=W.ItemCode
  4. INNER JOIN OITM M ON V.ItemCode=M.ItemCode
  5. INNER JOIN OITB B ON M.ItmsGrpCod=B.ItmsGrpCod
  6. INNER JOIN OWHS S ON W.WhsCode=S.WhsCode
  7. WHERE V.DocDate BETWEEN '20130101' AND '20140430' AND W.WhsCode = 02
  8. GROUP BY V.ItemCode, S.whsname, W.OnHand, V.Dscription
  9. ORDER BY V.ItemCode

esto me arroja un total de 7094 items vendidos en cierto tiempo y ps obvio la cantidad vendida por cada item, hasta ahi todo estaba bien ahora me dicen que debo restarle los items que esten en la tabla de notas credito es decir que el total debe ser los items que se han vendido menos los items que se han devuelto, lo que hice fue hacer una consulta para que me muestre los items y las cantidades que se han devuelto en el mismo tiempo que la consulta anterioir asi:

Código SQL:
Ver original
  1. SELECT DISTINCT ItemCode, SUM(Quantity) AS CANTIDAD_DEVUELTA, WhsCode AS bodega
  2. FROM RIN1
  3. WHERE DocDate BETWEEN '20130101' AND '20140430' AND WhsCode=02
  4. GROUP BY ItemCode, WhsCode
  5. ORDER BY ItemCode

esto me muestra que se devolvieron 2320 items en la fecha del 20130101 al 20140430

por ejemplo en la primera consulta me muestra que del item L1-001 NOVEX se vendieron un total de 148 y en la consulta N 2 de notas credito me dice que en ese mismo periodo se devolvieron 2 unidades del item L1-001 NOVEX es decir que en la consulta final me debe mostrar un total de vendidos del item L1-001 NOVEX de 146 intente hacer una union pero ps creo que por los group by y por que la cantidad de datos en cada consulta son diferentes no me dejo, que pena alargar tanto el tema pero ps quería que lo entendieran bn para que me puedan ayudar.

Cualquier dudan que tengan pregunten me y con gusto les contesto.

Mil gracias y espero puedan ayudarme.

Última edición por gnzsoloyo; 05/05/2014 a las 15:02
  #2 (permalink)  
Antiguo 05/05/2014, 16:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Union de dos consultas o restar dos tablas

puedes hacerlo con 2 subquerys:

Código SQL:
Ver original
  1. SELECT * FROM(
  2. SELECT V.ItemCode AS CODIGO_ITEM, V.Dscription, SUM(V.Quantity)AS TOTAL_VENDIDOS, S.whsname AS BODEGA,W.OnHand AS EN_STOCK
  3. FROM INV1 V
  4. INNER JOIN OITW W ON V.ItemCode=W.ItemCode
  5. INNER JOIN OITM M ON V.ItemCode=M.ItemCode
  6. INNER JOIN OITB B ON M.ItmsGrpCod=B.ItmsGrpCod
  7. INNER JOIN OWHS S ON W.WhsCode=S.WhsCode
  8. WHERE V.DocDate BETWEEN '20130101' AND '20140430' AND W.WhsCode = 02
  9. GROUP BY V.ItemCode, S.whsname, W.OnHand, V.Dscription
  10. ) AS t1 LEFT JOIN
  11.  
  12. (SELECT DISTINCT ItemCode, SUM(Quantity) AS CANTIDAD_DEVUELTA, WhsCode AS bodega
  13. FROM RIN1
  14. WHERE DocDate BETWEEN '20130101' AND '20140430' AND WhsCode=02
  15. GROUP BY ItemCode, WhsCode) AS t2 ON (t1.codigo=t2.itemcode)

con eso obtendrias los datos que necesitas restar ahora te corresponde a ti terminar el query :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/05/2014, 16:38
 
Fecha de Ingreso: abril-2014
Ubicación: Bogota
Mensajes: 14
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Union de dos consultas o restar dos tablas

libras una cosa me marca el siguiente error:

Msg 8114, Level 16, State 5, Line 1
Error converting data type nvarchar to numeric.

que puede ser?
  #4 (permalink)  
Antiguo 06/05/2014, 08:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Union de dos consultas o restar dos tablas

porque estas tratando de convertir/usar una cadena como numerico....

si pones un ejemplo de tus datos te podria ayudar un poco mas :P

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 06/05/2014, 11:03
 
Fecha de Ingreso: abril-2014
Ubicación: Bogota
Mensajes: 14
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Union de dos consultas o restar dos tablas

Listo Libras gracias, ya lo solucione.

muchas gracias por tu colaboracion

Etiquetas: restar, select, siguiente, tabla, tablas, union
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 05:30.