我正在使用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
谢谢大家的帮助,伙计们!
答案 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_date
和account_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