首页 > 解决方案 > SQL - 在每条记录的两个日期之间列出

问题描述

我的数据源如下所示。

在此处输入图像描述

我想要像下面这样的输出。

基本上,它应该在这些时期之间的每个日期多次列出每个员工。

在此处输入图像描述

为了快速简便,下面是临时数据代码。

DROP TABLE IF EXISTS #Emp

CREATE TABLE #Emp
(
    EmpID VARCHAR(6), 
    StartDate DATE, 
    EndDate DATE
)

INSERT INTO #Emp 
VALUES ('E001','2021-08-01', '2021-08-05'),
       ('E002','2021-08-22', '2021-08-22'),
       ('E003','2021-08-15', '2021-08-17')

标签: sqlsql-servertsql

解决方案


建立一个日历表并加入它。

Select e.EmpId, c.Date
from #Emp e
join Calendar c
  on c.Date between e.StartDate and e.EndDate

推荐阅读