如何在SQL中删除重复的帐户?

时间:2016-07-28 07:24:22

标签: sql sql-server duplicates

我正在使用SQL Server 2008,我想知道如何从表中删除重复的客户或在我的查询中将其排除。 Account_ID只能有1个与之关联的产品。具有最近购买日期的帐户应该显示。一个例子如下:

    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

谢谢大家的帮助,伙计们!

3 个答案:

答案 0 :(得分:0)

请尝试以下查询,请将TABLENAME替换为您的表格

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

答案 1 :(得分:0)

只需使用最高purchase_dateaccount_id分组获取最新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 。然后使用内部联接从获取的详细信息中获取其他详细信息。

BufferedStreamReader

答案 2 :(得分: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