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
Para unir 2 consultas debes usar UNION ALL, pero cada consulta debe tener la misma cantidad de campos y los tipos de datos de cada columna deben ser compatibles.
Ejemplo:
SELECT Total=(Price*Quantity) , T1.[ItmsGrpCod], ' ' as ResType, 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 0 as Total, 0 as ItmsGrpCod, T1.[ResType], T0.*
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
2 Me gusta
Muchas gracias ya estaba haciendo el union all y si me fije que me faltaban campos, el query termino quedando asi:
SELECT Total=(PriceQuantity), 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=(PriceQuantity), ‘’, T1.[ResType],T0.
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
3 Me gusta
Tenia yo un problema parecido y con esta solución que le has dado lo puedo arreglar.
Muchas gracias por el aporte.
Angel.
1 me gusta
Diras que todo lo que se me atora te pregunto gabriel pero ya termine el otro reporte hice uno que tambien usaba query pero como vieron que ya le agarre la onda me pusieron otro mas dificil, tengo este query
SELECT T0.[DocEntry], T0.[ItemCode], T0.[IssuedQty], T0.[PlannedQty], Adicional = ( T0.[IssuedQty] - T0.[PlannedQty]) , T1.[ItemCode], T1.[ItemName], CAST(T1.[ItmsGrpCod] AS char), T1.[SalUnitMsr]
FROM WOR1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE (T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167) AND T0.[IssuedQty] > T0.[PlannedQty]
ORDER BY T0.[DocEntry], T1.[ItmsGrpCod]
El resultado me da 23 registros que son los excedentes, pero quiero agregarle el campo Price, de la Tabla IGE1 que se relaciona con ItemCode y con BaseRef, pero al hacer este codigo me duplica algunos articulos, no quiero usar union all porque se debe asignar a cada articulo su precio y hare otro query con los articulos de gastos y mano de obra para unirlos con union all
SELECT T0.[DocEntry], T0.[ItemCode], T0.[IssuedQty], T0.[PlannedQty], Adicional = ( T0.[IssuedQty] - T0.[PlannedQty]) , T1.[ItemCode], T1.[ItemName], CAST(T1.[ItmsGrpCod] AS char), T2.Price, T2.[UnitMSR]
FROM WOR1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNER JOIN IGE1 T2 ON T0.[ItemCode] = T2.[ItemCode] AND T0.[DocEntry] = T2.[BaseRef]
WHERE (T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167) AND T0.[IssuedQty] > T0.[PlannedQty]
ORDER BY T0.[DocEntry], T1.[ItmsGrpCod]
Resultado del primer query
Resultado del segundo query
@fernando_cort, Man, te voy a cobrar las horas de consultoria! Jajaja!
No vale, mira en ese caso Aplica la sentencia DISTINCT para que no repita los registros identicos.
SELECT DISTINCT
T0.[DocEntry], T0.[ItemCode], T0.[IssuedQty], T0.[PlannedQty], Adicional = ( T0.[IssuedQty] - T0.[PlannedQty]) , T1.[ItemCode], T1.[ItemName], CAST(T1.[ItmsGrpCod] AS char), T2.Price, T2.[UnitMSR]
FROM WOR1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNER JOIN IGE1 T2 ON T0.[ItemCode] = T2.[ItemCode] AND T0.[DocEntry] = T2.[BaseRef]
WHERE (T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167) AND T0.[IssuedQty] > T0.[PlannedQty]
ORDER BY T0.[DocEntry], T1.[ItmsGrpCod]
De echo si estoy considerandote en la nomina, y use el query pero me dio 14 valores de mas sospecho que en donde esta uniendo de mas es en el >, mira esta es la tabla de resultado que me da
Ejecuta este a ver:
SELECT T0.[DocEntry], T0.[ItemCode], T0.[IssuedQty], T0.[PlannedQty], Adicional = ( T0.[IssuedQty] - T0.[PlannedQty]) , T1.[ItemCode], T1.[ItemName], CAST(T1.[ItmsGrpCod] AS char), T2.Price, T2.[UnitMSR]
FROM WOR1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
INNER JOIN (SELECT DISTINCT ItemCode, BaseRef, Price,UnitMSR FROM IGE1 ) T2
ON T0.[ItemCode] = T2.[ItemCode] AND T0.[DocEntry] = T2.[BaseRef]
WHERE (T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167) AND T0.[IssuedQty] > T0.[PlannedQty]
ORDER BY T0.[DocEntry], T1.[ItmsGrpCod]
1 me gusta
Me sigue trayendo datos de mas lo que estaba haciendo es un doble union all una estructura asi:
Select
WOR1
inner join IOTM
UNION ALL
WOR1
inner join IGE1
UNION ALL
WOR1
inner join ORSC
UNION ALL
WOR1
inner join IGE1
Se podra o es algo demaciado rebuscado?
o si unimos factores de IGE1
Select
WOR1
inner join IOTM
UNION ALL
WOR1
inner join ORSC
UNION ALL
WOR1
inner join IGE1
Ya vi detalladamente las tablas y el problema es que un mismo articulo puede tener diferentes costos por el TC asi es que hace bastante dificil el relacionarlos asi es que se omitio el precio, muchas gracias ya me dieron otro reporte ahora mas entretenido asi que proximamente actualizare el post
2 Me gusta