volver filas parcialmente distintos / únicos
Pregunta
Es necesario crear una consulta que agrupa por dos columnas y devuelve una columna adicional en base a una condición.
Por ejemplo, digamos que tengo las siguientes columnas:
CódigoProducto | SerialNumber | Cantidad | DatePurchased | CustomerID
y la tabla contiene combinaciones duplicadas de CódigoProducto y SerialNumber con diferentes Quanitites y fechas de compra. Me gustaría volver el código de producto, SerialNumber y la cantidad para la fila con mayor valor (más reciente) para DatePurchased. Para complicar más las cosas que deberá hacerse para todas las filas donde CustomerID = 'xxx'.
¿Ideas ???
Cualquier ayuda apreciada. Saludos.
Solución
Suponiendo única DatePurchased:
SELECT a.*
FROM Table as a
JOIN (
SELECT ProductCode, SerialNumber, MAX(DatePurchased) as MaxDate
FROM Table
GROUP BY ProductCode, SerialNumber
) as b ON
a.ProductCode = b.ProductCode
AND a.SerialNumber = b.SerialNumber
AND a.DatePurchased = b.MaxDate
WHERE
a.CustomerID = 'xxx'
Otros consejos
SELECT
T1.ProductCode,
T1.SerialNumber,
T1.Quantity
FROM
Some_Table T1
LEFT OUTER JOIN Some_Table T2 ON
T2.ProductCode = T1.ProductCode AND
T2.SerialNumber = T1.SerialNumber AND
T2.CustomerID = T1.CustomerID AND
T2.DatePurchased > T1.DatePurchased
WHERE
T1.CustomerID = 'xxx' AND
T2.ProductCode IS NULL
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow