Question个
以下是我的数据片段:
Create Table Emps(person VARCHAR(50), started DATE, stopped DATE);
Insert Into Emps Values
('p1','2015-10-10','2016-10-10'),
('p1','2016-10-11','2017-10-11'),
('p1','2017-10-12','2018-10-13'),
('p2','2019-11-13','2019-11-13'),
('p2','2019-11-14','2020-10-14'),
('p3','2020-07-15','2021-08-15'),
('p3','2021-08-16','2022-08-16');
我想使用T-SQL来统计有多少人符合以下标准--at least once的倍数也应算作1:
对于一个人来说:
- "Start"中的一个日期(例如
s1
)至少晚于"End"中的一个日期(例如e1
) -
s1
和e1
在同一年,需要手动设置-例如,‘2021-01-01’到‘2022-01-01’
Example expected response个
如果我将日期范围‘2016-01-01’到‘2017-01-01’放在WHERE/HAVING子句中的某个位置,则输出应为1,因为只有p1
的开始日期和结束日期都在2016年,且开始日期大于结束日期:
s1
='2016-10-11'
,e1
='2016-10-10'
.
Why can't I do this myself个
我被困住的原因是我不知道如何在组之间进行逐行比较.该问题要求在Person ID内比较不同列(从开始到结束)、不同行之间的值.