Condición solo traiga un código y no repetido

Hola estimados señores SAP

Me dirijo a ustedes para ver si me pueden ayuda con la siguiente consulta:
Vieran que tenemos un query que muestra los resultados tal y como los queremos pero me esta metiendo repetidas líneas que efectivamente en la condición están duplicadas. pero será que Existe algún hibrido que yo le diga si se repite el código solo muestre uno?

Como pueden ver la imagen me esta trayendo 6 líneas pero 3 líneas son iguales y solo requiero que me muestre solo una linea por codigo.

SELECT T1."ItemCode" AS "Código", T1."ItemName" AS "Descripción", T1."U_LD_Precio1",
 T1."OnHand"  - T1."IsCommited"  AS "STOCK TOTAL", T1."MinLevel", T1."MinLevel" * 0.2 AS "20% DEL MINIMO", CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T1."PicturName"), T1."OnHand", T2."Quantity", T3."DocNum" 
FROM OITB T0  
INNER JOIN OITM T1 ON T0."ItmsGrpCod" = T1."ItmsGrpCod" 
LEFT JOIN POR1 T2 ON T1."ItemCode" = T2."ItemCode" 
LEFT JOIN OPOR T3 ON T2."DocEntry" = T3."DocEntry" 
WHERE T1."ItemType" in('I') and T1."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') and T1."OnHand" - T1."IsCommited" <  T1."MinLevel" * 0.20 and T3."DocNum" = [%0]

justo despues del SELECT añadele un DISTINCT

SELECT DISTINCT T1."ItemCode" AS "Código" .....

Estas haciendo la búsqueda de los items pertenecientes a una orden de compra? Si es asi no debes empezar por OITB sino por OPOR.

1 me gusta

@tenguman

Muchas gracias por tu respuesta.

Logre crear el query con el distinct sin embargo he notado que no hace nada diferente al resultado final.

SELECT DISTINCT T1."ItemCode" AS "Código", T1."ItemName" AS "Descripción", T1."U_LD_Precio1",
 T1."OnHand"  - T1."IsCommited"  AS "STOCK TOTAL", T1."MinLevel", T1."MinLevel" * 0.2 AS "20% DEL MINIMO", CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T1."PicturName"), T1."OnHand", T2."Quantity", T3."DocNum" 
FROM OITB T0  
INNER JOIN OITM T1 ON T0."ItmsGrpCod" = T1."ItmsGrpCod" 
INNER JOIN POR1 T2 ON T1."ItemCode" = T2."ItemCode" 
INNER JOIN OPOR T3 ON T2."DocEntry" = T3."DocEntry" 
WHERE T1."ItemType" in('I') and T1."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') and T1."OnHand" - T1."IsCommited" <  T1."MinLevel" * 0.20 and T3."DocNum" = [%0]

La consulta es si en este caso el GROUP BY aplicaría en la consulta o no tendría mayor efecto.

Saludes!

Si las descripciones son diferentes entre esos dos campos, ni el distinct ni el group by van a funcionar; pues estos solo obvian los resultados repetidos si todos los campos referenciados son iguales.

Nuevamente, debes ordenar tu consulta, partiendo desde OPOR en lugar de OITB

@tenguman

Muchas gracias por tu referencia. He echo el cambio mencionado.

SELECT DISTINCT T2."ItemCode", T2."ItemName", T2."U_LD_Precio1", T2."OnHand" - T2."IsCommited", T2."MinLevel", T2."MinLevel" * 0.2, CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T2."PicturName"), T2."OnHand", T1."Quantity", T0."DocNum" 
FROM OPOR T0  
INNER JOIN POR1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" 
WHERE T2."ItemType"  in('I') AND T2."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') AND T2."OnHand" - T2."IsCommited" <  T2."MinLevel" * 0.20 AND T0."DocNum" = [%0]

Sin embargo repite las líneas y no requiero que lo haga.
Y comprendo lo del GROUP BY

image

Añadele a tu consulta:

T1.“LineNum”, T1.“LineStatus”

@tenguman

image

Eso es lo que sale.

DocEntry y LineNum son los PK de POR1. Lo mas probable es q se hayan generado dos rows para el mismo item para una Orden de Compra.

1 me gusta

Correcto ya que lo que llega a bodega no siempre viene en una sola caja para un solo ítem. La idea principal es que no importa cuentas líneas vengas de ese pedido repetido sino que si cumple con la función del query solo me muestre un solo articulo y no me repita las líneas.

No se si me explico.

Pero en tu caso, en las dos lineas repetida aparece como cantidad (digamos) 200… entonces los items para ese row son 200 o la suma (400)?

Si es la suma, prueba esto:

SELECT T2."ItemCode", 
		T2."ItemName", 
		T2."U_LD_Precio1", 
		T2."OnHand" - T2."IsCommited", 
		T2."MinLevel", 
		T2."MinLevel" * 0.2, 
		CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T2."PicturName"), 
		T2."OnHand", 
		SUM(T1."Quantity"), 
		T0."DocNum" 
FROM OPOR T0  
INNER JOIN POR1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" 
WHERE T2."ItemType"  in('I') AND T2."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') AND T2."OnHand" - T2."IsCommited" <  T2."MinLevel" * 0.20 AND T0."DocNum" = [%0]
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 10
1 me gusta

Te comento:

image

image

En el pedido:

image

Por ende son 2 líneas del mismo código pero diferente cantidad de.

Para mis efectos no me interesa la cantidad de líneas solo que no me duplique o repita codigos

Si es eso, aplica la suma q coloque arriba, xq la tabla q genera duplicidad es POR1.

1 me gusta

@tenguman

He validado tu consulta sin embargo no he tenido resultados de dicho query.

SELECT T2."ItemCode", T2."ItemName", T2."U_LD_Precio1", T2."OnHand" - T2."IsCommited", T2."MinLevel", T2."MinLevel" * 0.2, CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T2."PicturName"), T2."OnHand", SUM(T1."Quantity"), T0."DocNum", T1."Dscription" 
FROM OPOR T0  
INNER JOIN POR1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" WHERE T2."ItemType"  in('I') AND T2."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') AND T2."OnHand" - T2."IsCommited" <  T2."MinLevel" * 0.20 AND T0."DocNum" = [%0] 
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 10

Será que hice algo mal ?

Has añadido , T1.“Dscription”

Entonces debes añadirle un 11 al group by

@tenguman

he actualizado el query pero sigue igual.

SELECT T2."ItemCode", T2."ItemName", T2."U_LD_Precio1", T2."OnHand" - T2."IsCommited", T2."MinLevel", T2."MinLevel" * 0.2, CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T2."PicturName"), T2."OnHand", SUM(T1."Quantity"), T0."DocNum"
FROM OPOR T0  
INNER JOIN POR1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode" WHERE T2."ItemType"  in('I') AND T2."U_LD_Abc2" in('+A' , 'A' , 'B' , 'C' , 'N', 'X', 'Z') AND T2."OnHand" - T2."IsCommited" <  T2."MinLevel" * 0.20 AND T0."DocNum" = [%0] 
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 10

q error te sale? Sale el mismo resultado q sin el group by?

En realidad nada solo no muestra nada.

@tenguman

Le estas colocando valor al [%0] en?

AND T0.“DocNum” = [%0]

hOLA BUEN DIA, PRUEBA POR FAVOR ESTE CODIGO, Y ME COMENTAS COMO TE FUE, SALUDOS!!!

SELECT 
	T0.DocEntry, T1.DocNum,T0.LineNum, T0.ItemCode, T0.Dscription, T0.Quantity, T2.OnHand,T2.OnHand-T2.IsCommited, T2.MinLevel * 0.2,CONCAT('\\10.10.10.28\sap\VIAS DE ACCESO\Imagenes\' , T2."PicturName") 
FROM POR1 T0
	INNER JOIN OPOR T1 ON T1.DocEntry=T0.DocEntry
	INNER JOIN OITM T2 ON T2.ItemCode=T0.ItemCode
WHERE T2.ItemType in('I') AND T2.OnHand - T2.IsCommited <  T2.MinLevel * 0.20 AND T0."DocNum" = [%0]
1 me gusta

@jamh1976

HE VALIDADO Y MUESTRA LO MISMO.
Saludes!