我有一个包含以下字段的数据集;
1)Customer_ID
2)Customer_Name
3)Transaction_Date
4)Transaction_Amount
我需要一张表,只列出那些在前一笔交易的60天内完成过多次交易的客户。我有一些基本的SQL和Excel概念。如果有任何有用的建议,我们将不胜感激。我可以使用MS Access 2007或Excel。感谢
我已经使用SQL Server 2019为您创建了一个答案。";棘手的";这里的一部分是在您的日期集上使用自联接来比较彼此之间的交易日期。然而,为了使您的自加入生效,您需要有交易ID,否则您最终会将每个交易记录与自身(以及所有其他记录(进行比较,并且总是在60天内有一笔交易。我使用SQL Server中的row_number((函数来创建事务ID。这是我的问题:
WITH t(t_id, customer_id, customer_name, transaction_date, transaction_amount)
AS(
SELECT row_number() OVER (ORDER BY transaction_date) as t_id,
customer_id,
customer_name,
transaction_date,
transaction_amount
FROM
transactions
)
SELECT DISTINCT
t.customer_id,
t.customer_name
FROM
t
JOIN
t as tt on
t.customer_id = tt.customer_id
AND t.t_id <> tt.t_id
AND ABS(DATEDIFF(day, t.transaction_date, tt.transaction_date)) <= 60
这里有一个链接,链接到我的答案。https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=70afcb2dafd9de4728059a91a43c84d1