SQL 根据Groupby条件创建列

SQL create a column based on Groupby condition

我试图查看一个事件是否在一个月内在 table 中出现不止一次,并为 'No' 分配一个布尔逻辑 0,为 'Yes' 分配一个布尔逻辑 1。

示例table:

事件 活动日期
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

创建 table 测试(事件 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'),

只需使用一个window函数:

select t.*,
       (count(*) over (partition by event, year(date), month(date)) > 1) as returning
from t;