Seleccionando el nombre del primer registro de valores duplicados.
Estoy escribiendo una consulta en la que quiero seleccionar el Número de parte, Descripción, Modelo y Cantidad disponible de una vista.
Pero en nuestro sistema, hay Descripciones o Modelos ligeramente diferentes para el mismo número de parte.
Como ejemplo, la Parte A tiene una descripción como Esta es la Parte A y también hay otro registro con una descripción como Esta es la Parte Aa
En mi consulta, quiero eliminar los duplicados y sumar la Cantidad disponible y mostrarla. Pero debido a las descripciones y modelos diferentes para los mismos números de parte, obtengo más valores duplicados en el informe final.
Este es mi código actual.
SELECT DISTINCT PART_NO as PartNo,
ad.INVENTORY_PART_API.Get_Description(CONTRATO, NUMERO_PARTE) as DescripcionParte,
ad.Inventory_Product_Family_API.Get_Description(ad.Inventory_Part_API.Get_Part_Product_Family(CONTRATO, NUMERO_PARTE)) as ModeloParte,
SUM( CANTIDAD_DISPONIBLE - CANTIDAD_RESERVADA) as CantidadDisponible
FROM ad.INVENTORY_PART_IN_STOCK_UIV
WHERE CONTRATO is not null and
upper(ad.Sales_Part_API.Get_Catalog_Group(CONTRATO, NUMERO_PARTE)) = upper('SPAM')OR
upper(ad.Sales_Part_API.Get_Catalog_Group(CONTRATO, NUMERO_PARTE)) = upper('OTOA')
GROUP BY NUMERO_PARTE,
ad.INVENTORY_PART_API.Get_Description(CONTRATO, NUMERO_PARTE),
ad.Inventory_Product_Family_API.Get_Description(ad.Inventory_Part_API.Get_Part_Product_Family(CONTRATO, NUMERO_PARTE))
Obtengo 14623 registros, 46 registros están duplicados debido a que la descripción o el modelo eran diferentes entre sí. ¿Hay alguna manera de obtener esto sin duplicados?
Intenté seleccionar solo el Número de parte y la Cantidad. Luego, los registros vienen sin duplicados. Quiero saber si hay alguna manera de seleccionar el Número de parte y luego asignar descripción y modelo a partir del primer registro duplicado o algo así y la suma de la cantidad. Gracias.
davy.ai
Sí, hay una forma de seleccionar PartNo y luego asignar la descripción y el modelo a los valores duplicados del primer registro y luego sumar la cantidad. Puedes usar la función analítica ROW_NUMBER() para asignar un número de fila a cada registro particionado por PartNo, ordenado por la columna que tenga prioridad. Por ejemplo, si la prioridad es seleccionar la primera descripción alfabéticamente, la consulta se vería así:
En la consulta interna, utilizamos la función analítica ROW_NUMBER() para asignar un rango a cada registro particionado por PartNo y ordenado alfabéticamente por descripción. Luego, en la consulta externa, utilizamos la función MAX() para seleccionar la descripción y el modelo pertenecientes al primer registro clasificado y la función SUM() para calcular la cantidad total. Finalmente, hacemos un GROUP BY por PartNo para obtener el resultado deseado.