将日期范围分成单个记录,保留ID

时间:2013-12-26 20:11:17

标签: sql vba date ms-access-2010 range

我正在使用Access 2010数据库,该数据库具有一个表,其中包含员工已请求关闭的关联名称范围,格式如下:

DateRanges

 Name--| StartDate | EndDate  
 Joe---| 12/20/13  | 12/22/13   
 Sue---| 12/24/13  | 12/26/13  
 Guy---| 12/30/13  | 01/02/14

我正在尝试进行一项查询,该查询会将数据更改为每个日期都有一条单独的记录,但也会为每条记录保留相应的名称。像这样:

Separated

Name -- DatesOff  
Joe ----- 12/20/13   
Joe ----- 12/21/13   
Joe ----- 12/22/13   
Sue ----- 12/24/13   
Sue ----- 12/26/13   
Guy ----- 12/30/13   
................   
Guy ----- 01/02/13

我在这里看到了一些关于拆分日期范围的不同示例,但没有带来员工姓名/ ID。有任何想法吗?我愿意使用SQL或VBA来完成它。

1 个答案:

答案 0 :(得分:5)

您可以创建一个包含每一天的表格,并将其加入DateRanges表格,如下所示:

SELECT
   dr.Name,
   d.DateValue AS DatesOff
FROM
   Days d
INNER JOIN
   DateRanges dr
   ON (d.DateValue BETWEEN dr.StartDate AND dr.EndDate)