возвращает частично отличающиеся / уникальные строки

StackOverflow https://stackoverflow.com/questions/850827

Вопрос

Мне нужно создать запрос, который группируется по двум столбцам и возвращает дополнительный столбец на основе условия.

Например, допустим, у меня есть следующие столбцы:

Код продукта | Серийный номер | Количество | Дата приобретения | Идентификатор клиента

и таблица содержит повторяющиеся комбинации 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top