返回部分不同/唯一的行

时间:2009-05-12 02:01:18

标签: sql unique distinct partial group-by

我需要创建一个按两列分组的查询,并根据条件返回一个附加列。

例如,假设我有以下列:

ProductCode | SerialNumber |数量| DatePurchased |客户id

并且该表包含具有不同Quanitites和Purchase Dates的ProductCode和SerialNumber的重复组合。我想返回ProductCode,SerialNumber和具有DatePurchased最大(最新)值的行的数量。为了进一步复杂化,必须对CustomerID ='xxx'的所有行进行此操作。

任何想法???

任何帮助表示赞赏。 欢呼声。

2 个答案:

答案 0 :(得分:1)

假设唯一的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'

答案 1 :(得分:0)

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