【发布时间】:2016-01-20 07:33:35
【问题描述】:
所以我有一个最小和最大日期表,如下所示:
num mindate maxdate
1 x/xx/xxxx x/xx/xxxx
2 x/xx/xxxx x/xx/xxxx
3 x/xx/xxxx x/xx/xxxx
...
我现在需要做的是在多个员工的数据查询中使用 min 和 max 中的所有值,为每个员工提取所有这些日期之间的所有数据。
例如,结束表如下所示:
emp# empname sickdays mindate maxdate
0 emp1 1 x/xx/xxxx x/xx/xxxx
0 emp1 0 x/xx/xxxx x/xx/xxxx
1 emp2 1 x/xx/xxxx x/xx/xxxx
1 emp2 0 x/xx/xxxx x/xx/xxxx
...
任何人都可以指出我甚至开始解决这个问题的方向吗,我从来没有处理过做一个(对于每个 x 都查询下一个 y),我不知道要查找什么来寻找这样的事情,任何帮助都会很棒!
为清晰而编辑
员工数据将来自 2 个单独的表并合并为一个,以获取员工编号、姓名、病假天数以及我需要的任何其他信息。问题是我需要为每个员工在表的每个日期运行查询,以获取每个 Mindate 和 maxdate 之间的病假天数。
换句话说,每个员工将在每个日期范围内每隔多行病假。
所以一名员工看起来像:
emp# empname sickdays mindate maxdate
1 emp1 1 1/1/2016 1/7/2016
1 emp1 0 1/8/2016 1/14/2016
1 emp2 3 1/15/2016 1/21/2016
1 emp2 0 1/22/2016 1/29/2016
...
【问题讨论】:
-
empname 是否始终只是“emp”和 empnum 的连接?
-
由于缺乏实际日期,病假从何而来?是 max 和 mindate 的区别吗?
-
员工数据是什么样的?例如,结果表中的
sickdays列 a 也是 Employee 表中的列吗?或者是否有另一个表通过 empId 和sickdays跟踪病假,结果是第一个表的最小值和最大值之间的总和。 -
为了清楚起见查看编辑
标签: sql-server