我搜寻了相关资源,但所有类似的问题和答案都不太适用。 我有一个表格,其字段如下:person,thing,purdate。每当一个人购买一件新物品时,就会输入一条新记录。我想计算一个人购买任何“物品”(thing01或thing02,无论哪个)的连续月数。如果在连续购买日期中间有间断,则计数应该重新开始。使用以上数据,我希望得到以下结果:
我知道我可以在这个SQLFIDDLE中,提取purdate的年月份来获得一个人的不同列表,但我不确定如何仅计算连续记录并从断点重新开始(就像在我的数据中person_02在三月和五月之间中断一样)。
以下是数据:
| Person | Consec Days |
| person_01 | 3 |
| person_02 | 3 |
| person_02 | 2 |
我知道我可以在这个SQLFIDDLE中,提取purdate的年月份来获得一个人的不同列表,但我不确定如何仅计算连续记录并从断点重新开始(就像在我的数据中person_02在三月和五月之间中断一样)。
以下是数据:
create table records (
person varchar(32) not null,
thing varchar(32) not null,
purdate datetime not null
);
insert into records (person, thing, purdate) values
('person_01', 'thing01', '2014-01-02'),
('person_01', 'thing02', '2014-01-02'),
('person_01', 'thing02', '2014-02-27'),
('person_01', 'thing02', '2014-03-27'),
('person_02', 'thing02', '2014-01-28'),
('person_02', 'thing01', '2014-02-28'),
('person_02', 'thing02', '2014-03-28'),
('person_02', 'thing02', '2014-05-29'),
('person_02', 'thing02', '2014-06-29')
;