【发布时间】:2019-06-18 17:41:23
【问题描述】:
我试图按月计算前三年连续发生的事件。例如:
Item Type Month Year
Hat S May 2015
Shirt P June 2015
Hat S June 2015
Hat S May 2016
Shirt P May 2016
Hat S May 2017
我有兴趣查看同一个月内连续三年购买/出售了哪些商品。帽子分别于2015年、2016年、2017年5月售出;因此,我想确定这一点。衬衫是在 2015 年 6 月和 2016 年 5 月购买的。由于连续年份的月份不同,因此不符合条件。
基本上,我希望它能够回顾 3 年并识别每年同一个月内再次发生的购买/销售,最好使用指示变量。
我尝试了以下代码:
select distinct a.*
from dataset as a inner join dataset as b
on a.type = b.type
and a.month = b.month
and a.item = b.item
and a.year = b.year-1
and a.year = b.year-2;
我想得到:
Item Type Month Year
Hat S May 2015
Hat S May 2016
Hat S May 2017
我想我应该补充一点,我的数据比 2015-2017 年更长。它跨越 10 年,但我想看看在这 10 年的跨度内是否有连续 3 年(或更多)。
【问题讨论】:
-
有多种处理方法。尽管我们中的一些人可能对您的有趣问题很感兴趣,但我们讨厌做您的工作并进入您的学习过程。您做了什么尝试并需要具体帮助?
-
我尝试了以下代码:
select distinct a.* from dataset as a inner join dataset as b on a.type = b.type and a.month = b.month and a.item = b.item and a.year = b.year-1 and a.year = b.year-2; -
您必须使用 SQL 还是可以接受数据步骤?如果这些年是连续 5 年,你想要什么?前三个,后三个,全部 5 个?如果系列中有两个以上三年的序列,例如如果前三年是连续的并且最后三年是连续的,会发生什么?
-
可以接受数据步骤。我希望至少连续三年。顺序无关紧要。只要我能识别其中一个,两个三年序列就可以了。
标签: sql if-statement sas conditional-statements