小编Tim*_*m J的帖子

SQL 组间按行比较

问题

以下是我的数据片段:

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');
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴

我想使用 T-SQL 来计算有多少人至少满足一次以下条件- 倍数也应算作 1:

对于一个人来说:

  1. “开始”中的日期之一(例如s1)大于“结束”中的至少一个日期(例如e1
  2. s1e1在同一年,需手动设置 - 例如“2021-01-01”至“2022-01-01”

预期响应示例

如果我将日期范围“2016-01-01”到“2017-01-01”放在 WHERE / HAVING 子句中的某个位置,则输出应该为1,因为只有p1开始日期和结束日期都在 2016 年,其中开始日期大于结束日期:

s1='2016-10-11'e1= '2016-10-10'

为什么我自己不能做这件事

我陷入困境的原因是我不知道如何在组之间进行逐行比较。该问题需要比较人员 ID 内跨列(从末尾开始)跨行的值。

sql t-sql sql-server

5
推荐指数
1
解决办法
171
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1