0

我试图查看一个事件是否在一个月内多次出现在表中,并为“否”分配一个布尔逻辑 0,为“是”分配一个 1。

示例表:

事件 活动日期
转动 2021-01-24
转动 2021-01-25
转动 2021-03-14
转动 2021-04-21
停止 2020-05-20
停止 2021-05-20
停止 2021-05-24
开始 2021-05-23
开始 2021-05-24
开始 2021-05-24

示例输出:

事件 活动日期 回归?
转动 2021-01-24 1
转动 2021-01-25 1
转动 2021-03-14 0
转动 2021-04-21 0
停止 2020-03-20 0
停止 2021-03-20 1
停止 2021-03-24 1
停止 2021-05-31 0
开始 2021-05-23 1
开始 2021-05-24 1
开始 2021-05-24 1

创建表测试(事件varchar(20),一个日期)

insert into #test(Event, Event date)
values
('Turn','2021-01-24'),
('Turn','2021-01-25'),
('Turn','2021-03-14'),
('Turn','2021-04-21'),
('Stop','2020-05-20'),
('Stop','2021-05-20'),
('Stop','2021-05-24'),
('Start','2021-05-23'),
('Start','2021-05-24'),
('Start','2021-05-24'),
4

1 回答 1

0

只需使用窗口函数:

select t.*,
       (count(*) over (partition by event, year(date), month(date)) > 1) as returning
from t;
于 2021-06-01T17:40:16.753 回答