【发布时间】:2017-01-10 11:37:18
【问题描述】:
努力通过我想运行的 SQL 查询进行额外的步骤。
我有一个客户数据库,其中有一个客户表,其中包含客户加入的日期/时间详细信息,以及一个交易表,其中包含他们多年来的交易详细信息
我想做的是按加入日期(作为年份)分组并计算每年加入的人数,然后在下一列中我想计算在特定交易中进行交易的人数年份2016 年。通过这种方式,我可以展示多年来的客户保留率。
两个表都由一个客户 URN 链接,但我正在努力寻找最有效的方式来展示这一点。我可以轻松地按加入年份对成员进行计数和分组,并且可以显示最大日期交易,但我正在努力将两者结合在一起。我想我需要使用子查询和左连接,但它暗指我。
带有数据的示例输出列标题
Year_Joined = 2009
Joiner_Count = 10
Transact_in_2016 = 5
我在语法方面的表现。我知道这还远未完成。因为我需要按 DateJoined 分组,然后子查询 2016 年已交易的客户数量?
SELECT Customer.URNCustomer,
MAX(YEAR(Customer.DateJoined)),
MAX(YEAR(Tran.TranDate)) As Latest_Tran,
FROM Mydatabase.dbo.Customer
LEFT JOIN Mydatabase.dbo.Tran
ON Tran.URNCustomer = Customer.URNCustomer
GROUP BY Customer.URNCustomer
ORDER BY Customer.URNCustomer
【问题讨论】:
-
您的输出中只需要一年吗?
-
是的,理想情况下。我希望客户加入的年份,然后是当年加入的人数,然后是当年加入但他们在 2016 年进行交易的相同客户的计数。最终,我想将其显示为保留百分比。例如。 2015 年 35% 的客户在 2016 年进行了交易,以此类推。
标签: sql sql-server-2008