возвращает частично отличающиеся / уникальные строки
Вопрос
Мне нужно создать запрос, который группируется по двум столбцам и возвращает дополнительный столбец на основе условия.
Например, допустим, у меня есть следующие столбцы:
Код продукта | Серийный номер | Количество | Дата приобретения | Идентификатор клиента
и таблица содержит повторяющиеся комбинации ProductCode и SerialNumber с разными количественными показателями и датами покупки.Я хотел бы вернуть ProductCode, SerialNumber и количество для строки с наибольшим (самым последним) значением для DatePurchased.Чтобы еще больше усложнить ситуацию, это должно быть сделано для всех строк, где CustomerID = 'xxx'.
Есть какие-нибудь идеи???
Любая помощь приветствуется.Ваше здоровье.
Решение
Предполагая, что приобретена уникальная дата:
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'
Другие советы
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