【发布时间】:2020-10-23 12:48:38
【问题描述】:
我有一张存放员工休假的桌子。如果员工连续休假超过 1 天,例如 22-05-2020 到 26-05-2020,这将显示为一条记录。我正在尝试将此显示为 5 条记录,它们每天关闭。
我的表名为:Emp_Annual_Leave 并具有以下字段
emp_no leave_type leave_year half_day start_date end_date days_of_leave
12345 Annual 2020 N 22/05/2020 26/05/2020 5
上面是它当前的显示方式,我正在尝试显示上面的记录,如下所示:
emp_no leave_type leave_year half_day start_date end_date days_of_leave leave_date
12345 Annual 2020 N 22/05/2020 26/05/2020 1 22/05/2020
12345 Annual 2020 N 22/05/2020 26/05/2020 1 23/05/2020
12345 Annual 2020 N 22/05/2020 26/05/2020 1 24/05/2020
12345 Annual 2020 N 22/05/2020 26/05/2020 1 25/05/2020
12345 Annual 2020 N 22/05/2020 26/05/2020 1 26/05/2020
有人知道我会这样做吗?我觉得我需要使用 ROW_NUMBER() OVER(PARTITION BY) 但我所做的任何尝试都没有奏效。
提前致谢,
编辑: 我需要在这里创建的表是更大查询中的子查询,需要连接回我的数据库中的其他查询和表。我没有将此作为原始问题的一部分,现在更新为包括在内,以防这会影响我需要使用的方法
【问题讨论】:
-
您使用的是哪个版本的 SQL Server?
-
我正在使用 MicrosoftSQLServer2014
-
您是在寻找快速答案还是在考虑不同的方法?
-
理想情况下,我需要该表在今天正常工作,因为我需要在周一数据库更新之前将其恢复为某些内容,但这将是一个长期解决方案,因此我还需要考虑不同的方法和什么对数据库最有效。我正在寻找的上述输出实际上也需要在我的整体解决方案中用作子查询,所以我不确定使用 CTE 是否会成为我的最佳解决方案(我在这里也可能是错误的)跨度>
标签: sql sql-server datetime recursive-query