Enlazar tabla OITG con la Tabla OITM

Buenos días
Espero que se encuentren bien y nuevamente pidió de su ayuda ya deseo realizar un reporte donde pueda enlazar la tablar OITM con la tabla OITG esto es para trae por medio de consulta las propiedades de los artículos.
@Willy_Caldero

Sin mas por el momento y esperando su ayuda

OJO: En estas tablas no existe algo que puedas hacerlo para ligarlas, pero puedes hacer ciertos trucos para obtener lo que necesites.

Valida si te sirve algo asi:

select itemcode, 
         'Propiedad' = case when qrygroup1='Y' then (select itmsgrpnam from OITG where ItmsTypCod =1)
                                    when qrygroup2='Y' then (select itmsgrpnam from OITG where ItmsTypCod =2)
                                    when qrygroup3='Y' then (select itmsgrpnam from OITG where ItmsTypCod =3)
 end
  from OITM

Ya solo te queda hacer un when por cada propiedad que creo son 64.

2 Me gusta

Gacias @juliancab en la consulta que estoy realizando debo extraer los productos que pertenecen al grupo de articulo con su propiedad ya que la propiedad es con su ventas y cantidades vendidas. a continuación muestro la consulta que realice perola misma me trae todos los productos lo que no pertenece a la propiedad y los que pertenecen

SELECT T1.[ItemCode]  , T1.[Dscription] AS DESCRIPCIÓN,T2.[CardCode], 
T0.[CardCode] ,T0.[CardName] AS CLIENTE,T0.[DocEntry],T0.[DocDate], 
SUM(T1.[Quantity]*T2.[SalPackUn]) AS CANTIDAD, 
/*T2.[SalUnitMsr]*/ /*T2.[InvntryUom]*/ T1.[unitMsr] AS 'UNIDAD DE VENTAS',
T1.[PriceBefDi] AS 'PRECIO UNITARIO', 
SUM(T1.[LineTotal]-(T1.[LineTotal]*T0.[DiscPrcnt]/100)) AS VENTAS,
SUM(T1.[GrssProfit]) As Utilidad,T3.[ItmsGrpNam] as 'GRUPO DE ARTICULOS',
**(SELECT T5.ItmsGrpNam FROM OITG T5 WHERE ItmsTypCod=27)**
FROM OINV T0  
INNER JOIN INV1 T1 ON T0.[DocEntry]=T1.[DocEntry] 
INNER JOIN OITM T2 ON T1.[ItemCode]=T2.[ItemCode]
 INNER JOIN OITB T3 ON T2.[ItmsGrpCod]=T3.[ItmsGrpCod] 
WHERE T0.[DocDate]>=[%3] AND T0.[DocDate]<=[%4] AND T2.[CardCode]=[%0]  
AND T3.[ItmsGrpNam]=[%1] 
 GROUP BY T3.[ItmsGrpNam],T2.[CardCode],T0.[CardCode],
T0.[CardName],T0.[DocEntry],T0.[DocDate],T1.[ItemCode],T1.[Dscription],
T2.[NumInBuy], T1.[unitMsr] ,T1.[PriceBefDi]  

UNION ALL

 SELECT T1.[ItemCode] AS 'N° CATALOGO' ,
T1.[Dscription] AS DESCRIPCION, T2.[CardCode] , 
T0.[CardCode], T0.[CardName] AS CLIENTE,
T0.[DocEntry],T0.[DocDate] ,
-SUM(T1.[Quantity]*T2.[SalPackUn])  AS CANTIDAD,  
T1.[unitMsr] AS 'UNIDAD DE VENTAS',T1.[PriceBefDi] AS 'PRECIO UNITARIO', 
-SUM(T1.[LineTotal]-(T1.[LineTotal]*T0.[DiscPrcnt]/100)) AS VENTAS,
-SUM(T1.[GrssProfit]),T3.[ItmsGrpNam]as 'GRUPO DE ARTICULOS',

**(SELECT T5.ItmsGrpNam FROM OITG T5 WHERE ItmsTypCod=27)**
 FROM ORIN T0  
INNER JOIN RIN1 T1 ON T0.[DocEntry]=T1.[DocEntry]
INNER JOIN OITM T2 ON T1.[ItemCode]=T2.[ItemCode]
INNER JOIN OITB T3 ON T2.[ItmsGrpCod]=T3.[ItmsGrpCod] 
WHERE T0.[DocDate]>=[%3] 
AND  T0.[DocDate]<=[%4] AND T2.[CardCode]=[%0]
AND T3.[ItmsGrpNam]=[%1]  
GROUP BY T3.[ItmsGrpNam],
T2.[CardCode],T0.[CardCode], T0.[CardName],
T0.[DocEntry],T0.[DocDate],T1.[ItemCode], T1.[Dscription], 
T1.[unitMsr],T1.[PriceBefDi]

@Willy_Caldero

Bueno si conoces las unicas propiedades en la que debe caer, creo seria mas facil ya que con eso lo filtras. (asi lo entiendo)

No le entendie lo que me quiso decir @juliancab

EL CAMPO [QryGroup27], ESTE CAMPO ESTA SETEADO EN N donde lo puedo setear Y por favor si me podrias asesorar @juliancab @Willy_Caldero

saludos

en el where es donde colocas las condicionales que necesitas…

Si necesitas que el QryGroup27 = ‘Y’ debes de colocarlo en el Where de la consulta.

Porque en tu consulta tienes que estás pidiendo el grupo por una variable:

Pero en la consulta lo colocas directamente a que debe ser el 27 si o si.

Entonces no entiendo… Es por variable o es el 27 a juro que debe ser el si?

Es que el grupo T3.[ItmsGrpNam]=[%1] mi catergoria y ItmsTypCod es la caracteristica de ese prodcuto en dicho grupo

Cierto cierto… ya vi que son tablas distintas…

Nada… entonces solo coloca abajo, en el where,
T2.qrygroup27 = ‘Y’ y ahí solo te va a traer los artículos que cumplen con esa condición.

Siento que no conoces bien como se utilizan los querys de SQL o nunca viste esa información, pues un where es lo más básico cuando vez sistemas.

No veo un tema de presentación… eso me hubiera ayudado a saber cual es tu nivel y a que te dedicas, y tal vez por eso no nos entendemos, pues estás pidiendo Querys y tome en consideración que serías de sistemas.

@Ares17000 @juliancab
Como esta Ares17000 espero que bien si soy del area de Sistema pero me dedico a lo adminstracion de redes y seguridad y en lo que es sql estoy comenzando y a lo que el SAP se refiere.

Deseo preguntarte otra cosa si no conozco las el numero de propiedades y quisiera buscarla por una variable que debería modificar.

Te recomiendo varias cosas:

  1. Que hagas el tema de presentación. a veces eso nos ayuda mucho a saber que tanta información dar y /o como darla ya que no todo el mundo lo comprende igual.
  2. Revisa algún curso básico de SQL en Youtube o alguna página así, aunque sea para que comiences a familiarizarte con temas de Tablas, campos, enlace (inner join, outer join, left join, rigth join, Union All) porque debes comprender que es lo que hacen para poder entender que está ocurriendo.
  3. Ya luego que te familiarices un poco más con esos conceptos podrás entender mejor los querys, puedes comenzar a usar el “Generador de consultas” que ya trae SAP y te ayuda a crear querys sencillos.

Porqué te digo esto?.. porque la respuesta a tu pregunta está en el mismo query, y me das a entender que o alguien te realizó ese query, o no estás entendiendo que hace, y eso es más peligroso porque puedes dar una mala información sin saberlo a la dirección…

Ahora bien. Para ayudarte, la variables para modificar y solicitar son esos campos que vez en el query que están como [%0], [%1]… esos son las variables que se solicitan a los usuarios.

Para validar un número y no sabes cual necesitas, tienes primero que conocer que quieres ver directamente en los artículos, en la pestaña propiedades puede ver que propiedades tienen los artículos que te interese, eso no se vería en un query, o no al menos de la manera que me das a entender que quieres ver.

2 Me gusta

Perdon me ocupe, pero checa lo que comenta @Ares17000, es justamente lo que te comentaba, es meterlo en el where a sabienda que ya sabes que propiedad quieres filtrar.

Primero tu query esta mal por que estas cruzando con la tabla OITB, cuando lo que mencionaste inicialmente era relacion con la OITG.
En el caso de la OITG es un poco complicado lo que quieres hacer, por que lastimosamente no hay relación directa, la relación como te comento @juliancab, la puede sacar con un CASE, y en tu caso tendría que estar en el Where por el parámetro,.
Completa tu query con este código.

/**SELECT FROM [OITG] T0 **/*
DECLARE @NombreParametro as varchar(30)*
/* WHERE */*
Set @NombreParametro = /* T0.ItmsGrpNam*/ ‘[%0]’*
Set @CodigoParametro = 
(Select TOP 1 ItmsTypCod FROM OITG WHERE ItmsGrpNam=@NombreParametro)
.....
.....
FROM OITM T2 
WHERE 
(CASE 
 WHEN @CodigoParametro=1 AND T2.QryGroup1 = 'Y' THEN 'Y'
 WHEN @CodigoParametro=2 AND T2.QryGroup2 = 'Y' THEN 'Y'
.....
...
 WHEN @CodigoParametro=64 AND T2.QryGroup64 = 'Y' THEN 'Y'
ELSE 'N'
END) ) ='Y'
2 Me gusta

@Willy_Caldero Gracias Ingeniero siempre usted con su amabilidad para explicar las pregunta. Asi como me comenta lo haré Saludos

Gracias

@Willy_Caldero Este fue el la consulta que realice pero solo me esta funcionando para una sola porpiedad

SELECT T1.[ItemCode]  , T1.[Dscription] AS DESCRIPCIÓN,T2.[CardCode], 
T0.[CardCode] ,T0.[CardName] AS CLIENTE,T0.[DocEntry],T0.[DocDate], 
SUM(T1.[Quantity]*T2.[SalPackUn])  AS CANTIDAD, 
/*T2.[SalUnitMsr]*/ /*T2.[InvntryUom]*/ T1.[unitMsr] AS 'UNIDAD DE VENTAS',
T1.[PriceBefDi] AS 'PRECIO UNITARIO', 
SUM(T1.[LineTotal]-(T1.[LineTotal]*T0.[DiscPrcnt]/100)) AS VENTAS,
SUM(T1.[GrssProfit]) As Utilidad,T3.[ItmsGrpNam] as 'GRUPO DE ARTICULOS',
'Propiedad' = case when t2.qrygroup27='Y' then (select itmsgrpnam from OITG 
where ItmsTypCod =27) end
FROM OINV T0  INNER JOIN INV1 T1 ON T0.[DocEntry]=T1.[DocEntry]
INNER JOIN OITM T2 ON T1.[ItemCode]=T2.[ItemCode] 
INNER JOIN OITB T3 ON T2.[ItmsGrpCod]=T3.[ItmsGrpCod]
WHERE T0.[DocDate]>=[%3] AND T0.[DocDate]<=[%4] AND T2.[CardCode]=[%0]  AND 
T3.[ItmsGrpNam]=[%1] and t2.qrygroup27 = 'Y'  
GROUP BY T3.[ItmsGrpNam],T2.[CardCode],T0.[CardCode],T0.[CardName],
T0.[DocEntry],T0.[DocDate],T1.[ItemCode],T1.[Dscription],T2.[NumInBuy], 
T1.[unitMsr] ,T1.[PriceBefDi],t2.qrygroup27

UNION ALL

 SELECT T1.[ItemCode] AS 'N° CATALOGO' , T1.[Dscription] AS DESCRIPCION, 
T2.[CardCode] , T0.[CardCode], T0.[CardName] AS CLIENTE,T0.[DocEntry],
T0.[DocDate] ,-SUM(T1.[Quantity]*T2.[SalPackUn]) AS CANTIDAD,
 /*T2.[SalUnitMsr]*/
 /*T2.[InvntryUom]*/ T1.[unitMsr] AS 'UNIDAD DE VENTAS',
T1.[PriceBefDi] AS 'PRECIO UNITARIO',
 -SUM(T1.[LineTotal]-(T1.[LineTotal]*T0.[DiscPrcnt]/100)) AS VENTAS,
-SUM(T1.[GrssProfit]),T3.[ItmsGrpNam]as 'GRUPO DE ARTICULOS',
'Propiedad' = case when t2.qrygroup27='Y' then (select itmsgrpnam
 from OITG where ItmsTypCod =27) end

FROM ORIN T0 
 INNER JOIN RIN1 T1 ON T0.[DocEntry]=T1.[DocEntry]
 INNER JOIN OITM T2 ON T1.[ItemCode]=T2.[ItemCode] 
INNER JOIN OITB T3 ON T2.[ItmsGrpCod]=T3.[ItmsGrpCod]
 WHERE T0.[DocDate]>=[%3] AND  T0.[DocDate]<=[%4] AND T2.[CardCode]=[%0] AND
 T3.[ItmsGrpNam]=[%1] AND t2.qrygroup27 = 'Y'
 GROUP BY T3.[ItmsGrpNam],T2.[CardCode],T0.[CardCode], T0.[CardName], 
T0.[DocEntry],T0.[DocDate],T1.[ItemCode], 
T1.[Dscription], /*T2.[InvntryUom]*//*T2.[SalUnitMsr]*/ 
T1.[unitMsr],T1.[PriceBefDi],t2.qrygroup27 ORDER BY 6 DESC
1 me gusta