on 04-06-2016 7:21 PM
Buenas tardes mi duda es algo simple, como puedo unir dos resultados de consultas tengo la consulta :
SELECT Total=(Price*Quantity), T1.[ItmsGrpCod], t0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Y la consulta
SELECT T1.[ResType],T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Como puedo los dos resultados unirlos para que tuviera la columna ResType, ItmsGrpCod, Total agregadas a todas las columnas de la tabla IGE1 con los datos de los resultados respectivamente
Prueba esto
SELECT (Price*Quantity) Total, T1.[ItmsGrpCod] GrpArt,T2.[ResType],T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNER JOIN ORSC T2 ON T0.[ItemCode] = T2.[VisResCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Lo intente pero el resultado me sale vacio creo es un problema con los inner lo hice con este query pero me trae datos de mas ya que tiene el ItemCode vacio y el ItmsGrpCod vacio tambien cuando se supone tienen datos
SELECT T2.[ResType], Total=(Price*Quantity), T1.[ItmsGrpCod], t0.*
FROM IGE1 T0
LEFT JOIN ORSC T2 ON T0.[ItemCode] = T2.[VisResCode]
LEFT JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode] AND (T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] = 164 OR T1.[ItmsGrpCod] = 167)
El primero arroja 3677 resultados, el segundo 398, el problema es que al usar el LEFT arrojan juntos 4256 en total algunos en blanco con dato en en ResType y otros en ItmsGrpCod vacio igual que ResType pero dato en los demas campos, una duda extra relacionada con este problema cuando haco un reporte en crystal report me sale bien la suma pero al agregar otro campo se me multiplica
algo asi, como podre solucionar que no se haga bucle o se repita?
Respecto a tu primer pregunta...
Prueba anidando tu query:
SELECT Total=(Price*Quantity), T1.[ItmsGrpCod], t0.*,
(SELECT TA.[ResType] FROM ORSC TA WHERE T0.[ItemCode] = TA.[VisResCode]) as ResType
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Respecto a la segunda incógnita, te sugiero hacer la pregunta en una nueva discusión, esto para mantener el orden de la comunidad y facilitar las futuras consultas.
Trata de leer el siguiente documento:
¿Y ya probaste con un Union All?
SELECT Total=(Price*Quantity), T1.[ItmsGrpCod], ''
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Union All
SELECT 0, '', T1.[ResType]
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Acabo de intentar con all y si quedo como debia con los 4075, lo que pretendo es esto en la tabla IGE1 tengo el precio y cantidad de articulos pero esta ligada con OITM para los articulos principales 162, auxiliares 164 y miscelaneos 167, hay mas pero solo interesan en una grafica esos, esa misma tabla IGE1, se liga con ORSC ya que ahi estan los gastos y Mano de obra, en crystal reports que es donde mostrare el reporte y la grafica necesito esos 5 grupos para compararlos de esas ordenes de fabricacion con lo proyectado(de ahi mi otro problema) y en lugar de hacer 2 tablas diferentes quiero hacer una sola y asi sacar las sumas
En la modificacion que pusiste me muestra solo dos columnas pero quiero todas y pongo este query segun yo correcto y me marca error el sap que escribi mal?
SELECT Total=(Price*Quantity), T1.[ItmsGrpCod], T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Union All
SELECT T0.*, T1.[ResType]
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Recuerda que en el Union All, las dos sentencias SELECT tienen que tener el mismo número de columnas, con el mismo tipo de dato y en el mismo orden. (SQL UNION ALL)
Por ellos es que en el Query que te proporcioné se realizan las equivalencias:
Query 1 | Total=(Price*Quantity) | T1.[ItmsGrpCod] | "" |
Query 2 | 0 | " | T1.[ResType] |
Te recomiendo solo "jalar" en el select los campos que vas a utilizar.
Saludos.
Cierto se me olvidaba ese detalle muchas gracias, como necesitaria todas los campos de IGE1 y en los dos querys el total quedaria asi ya me da el resultado muchas gracias
SELECT Total=(Price*Quantity), T1.[ItmsGrpCod], '',T0.*
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Union All
SELECT Total=(Price*Quantity), '', T1.[ResType],T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Una duda si a lo generado con la union all quiero agregarle una columna de otra tabla? algo asi
SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) ,T0.BaseEntry
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
Union All
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char),T0.BaseEntry
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
Pero quiero agregarle una columna de @presupuesto_det, la columna DocEntry y presupuesto_det se liga con IGE1 por el campo IGE1.BaseEntry = @presupuesto_det.U_OF, con otra union no creo se pueda como podria hacerse la union ya de 4 tablas practicamente
User | Count |
---|---|
95 | |
11 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.