在指定日期内完成多个事务的记录

  • 本文关键字:事务 记录 日期 sql excel
  • 更新时间 :
  • 英文 :


我有一个包含以下字段的数据集;

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

最新更新