2016-07-28 4 views
1

私はSQL Server 2008を使用しています。重複した顧客をテーブルから削除する方法と、クエリで除外する方法がわかりました。 Account_IDには1つの商品しか関連付けられていません。最新の購入日のアカウントが表示されます。以下の例は次のとおりです。SQLで重複アカウントを削除するにはどうすればよいですか?

Account_ID, Account_Purchase, Purchase_Date 
    1   Product 1   1/1/2016 
    2   Product 1   1/2/2016 
    3   Product 2   1/5/2016 
    1   Product 3   3/12/2016 
    4   Product 3   1/5/2016 

理想的には私が唯一の参照になります。

Account_ID, Account_Purchase, Purchase_Date 
    2   Product 1   1/2/2016 
    3   Product 2   1/5/2016 
    1   Product 3   3/12/2016 
    4   Product 3   1/5/2016 

それはアカウント1

Account_ID, Account_Purchase, Purchase_Date 
    1   Product 1   1/1/2016 

から最新の購入ではないので、これは現れないはずはありがとうすべての人のために、人々!

+0

日付により(降順)、及びグループにより一つのレコードに限定ソーティング、ACCOUNT_IDによってグループ化してみています。 – FDavidov

答えて

0

をTABLENAMEを交換してください。その後、内部結合を使用して、取得した詳細から他の詳細を取得します。ここ

SELECT TABLE_NAME.* FROM TABLE_NAME 
INNER JOIN(
SELECT Account_ID, MAX(Purchase_Date) AS Purchase_Date 
GROUP BY Account_ID 
) LatestPurchases 
ON TABLE_NAME.Account_ID = LatestPurchases.Account_ID 
AND TABLE_NAME.Purchase_Date = LatestPurchases.Purchase_Date 
0

は、クエリの下に試してみてください、単にaccount_idで最大とグループを使用して、最新のpurchase_dateを取得あなたのテーブルで

 
WITH CTE 
AS (
    SELECT 
    *, 
    ROW_NUMBER() OVER (PARTITION BY Account_ID ORDER BY Purchase_Date DESC) AS RN 
FROM TABLENAME 
    ) 
SELECT 
    * 
FROM CTE 
WHERE RN = 1 

0

は、別のクエリ

SELECT 
    t.Account_id, 
    t.Account_Purchase, 
    t.Purchase_Date 
FROM 
    tablename t 
WHERE 
    t.Purchase_Date = (SELECT MAX(Purchase_date) FROM Tablename WHERE Account_ID = t.Account_ID) 
ORDER BY 
    t.Purchase_Date DESC 
関連する問題