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;
我试图查看一个事件是否在一个月内在 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;