возвращение частично различимых / уникальных строк - PullRequest
1 голос
/ 12 мая 2009

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

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

ProductCode | SerialNumber | Количество | ДатаКупить | CustomerID

, а таблица содержит дубликаты комбинаций ProductCode и SerialNumber с разными кванититами и датами покупки. Я хотел бы вернуть ProductCode, SerialNumber и количество для строки с наибольшим (самым последним) значением для DatePurchased. Чтобы еще больше усложнить ситуацию, это необходимо сделать для всех строк, где CustomerID = 'xxx'.

Есть идеи ???

Любая помощь приветствуется. Приветствия.

Ответы [ 2 ]

1 голос
/ 12 мая 2009

Предполагая уникальную дату покупки:

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'
0 голосов
/ 12 мая 2009
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
...