cancel
Showing results for 
Search instead for 
Did you mean: 

Unir dos resultados de querys

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

former_member188471
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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)

former_member188471
Active Contributor
0 Kudos

tendrias que jugar con los JOIN ya sea aplicando LEFT O RIGHT, seria muy bueno ver que te arroja cada query que mandaste de inicio

Former Member
0 Kudos

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?

http://foros.consultoria-sap.com/uploads/default/original/2X/4/47acbc1cfabd4bedfa6576f3c1685f15ffedd...

http://foros.consultoria-sap.com/uploads/default/original/2X/c/c0a7cb39a023034ea020135487c5c7afdfcd5...

gerardo_mendez
Active Contributor
0 Kudos

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:

Comentario personal sobre nuestro foro de SAP Business One

Former Member
0 Kudos

Gerardo ya lo habia anidado y solo me muestra los resultados del principal 3677 omite los de ORSC y en un momento creo el otro tema para capturar las imagenes gracias

gerardo_mendez
Active Contributor
0 Kudos

¿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]

gerardo_mendez
Active Contributor
0 Kudos

Por cierto... ¿Qué información pretendes mostrar?

Former Member
0 Kudos

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

gerardo_mendez
Active Contributor
0 Kudos

De acuerdo... No olvides marcar las respuestas de ayuda y respuesta correcta.

Saludos.

Former Member
0 Kudos

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]

gerardo_mendez
Active Contributor
0 Kudos

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 1Total=(Price*Quantity)T1.[ItmsGrpCod]""
Query 20"T1.[ResType]

Te recomiendo solo "jalar" en el select los campos que vas a utilizar.

Saludos.

Former Member
0 Kudos

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]

Former Member
0 Kudos

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

Answers (0)