【发布时间】:2014-11-11 14:35:05
【问题描述】:
我有一张表,列出了所有员工的缺勤(节假日),我们想知道今天谁不在,以及他们返回的日期。
很遗憾,缺勤没有 ID,因此如果这些日期之一是今天,您不能只从缺勤 ID 中检索最大日期。
但是,缺勤在输入时每天都会给定一个递增的 ID,所以我需要一个查询来查找employeeID,如果有今天日期的条目,然后将 AbsenceID 列增加到找到该缺席的最大日期。
表格示例(假设今天的日期是 11/11/2014,英国格式):
AbsenceID EmployeeID AbsenceDate
100 10 11/11/2014
101 10 12/11/2014
102 10 13/11/2014
103 10 14/11/2014
104 10 15/11/2014
107 21 11/11/2014
108 21 12/11/2014
120 05 11/11/2014
130 15 20/11/2014
140 10 01/03/2015
141 10 02/03/2015
142 10 03/03/2015
143 10 04/03/2015
因此,根据上述情况,我们希望返回日期为:
EmployeeID ReturnDate
10 15/11/2014
21 12/11/2014
05 11/11/2014
编辑:请注意,140-143 范围不能包含在结果中,因为它们会在未来出现,并且缺席的日期范围都不是今天。
大概我需要在每个条目上运行一个迭代子函数,其中雇员ID 匹配的今天日期。
【问题讨论】:
-
请在问题中阐明您的规则,因为它们目前令人困惑。到目前为止,您编写了什么 SQL?如何使用今天的日期?
-
好的,所以该表包含人们的预定假期。所有员工已预订的所有未来假期/假期以及因病缺勤都列在此表中。我们需要的是针对 Intranet 运行的查询,它可以显示今天不在办公室的其他员工以及他们返回的日期。所以上面的例子列出了几个预订的假期,员工 10 今天缺席所以我们需要在内网上显示,但是 2015 年未来的预订,我们对今天不感兴趣。不是我的数据库,所以我不能改变设计:(
标签: sql sql-server greatest-n-per-group