2009-05-12 4 views
1

2つの列でグループ化し、条件に基づいて追加の列を返すクエリを作成する必要があります。部分的に異なる行を返す

たとえば、次の列があります。

ProductCode | | SerialNumber |数量|日付購入済み|得意先コード

このテーブルには、異なるQuanititesとPurchaseDateを持つProductCodeとSerialNumberの重複した組み合わせが含まれています。 ProductCode、SerialNumber、DatePurchasedの値が最も大きい(最新の)行の数量を返したいと思います。これをさらに複雑にするには、CustomerID = 'xxx'のすべての行に対してこれを実行する必要があります。

助けてください。 乾杯。

+0

データベースプラットフォーム? SQL Server - MySQL - PostgreSQL - Oracle - その他? (Frankendatabaseはすべてのものを組み合わせていますか?) – araqnid

答えて

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' 
+0

Markに感謝し、完璧に働きました。 – andrej351

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 
関連する問題