2014-03-25 85 views
0

这是我的表看起来像:如何获取每个员工日期的最小和最大日期?

Employee_Number  |  DateTime 
00000001    |  2014/01/14 09:20 
00000001    |  2014/01/14 12:35 
00000001    |  2014/01/14 13:35 
00000002    |  2014/01/14 09:20 
00000001    |  2014/01/14 22:49 
00000001    |  2014/01/15 09:35 
00000001    |  2014/01/15 10:35 
00000001    |  2014/01/15 17:35 
00000002    |  2014/01/14 12:34 
00000002    |  2014/01/14 17:34 

我想做一个select语句,我会得到分钟,每天的东西员工这样最大日期时间:

Employee_Number  |  DateTime    MIN     MAX 
00000001    |  2014/01/14  2014/01/14 09:20 2014/01/14 22:49 
00000001    |  2014/01/15  2014/01/15 09:35 2014/01/15 17:35 
00000002    |  2014/01/14  2014/01/14 09:20 2014/01/14 17:34 

我已经谷歌搜索找到答案,我的困境,但不久的sql语句,我可以有是这样的:

declare @tmp table (
tranDate int, 
tranTime datetime 

        ) 

insert into @tmp 
select Convert(int, convert(nvarchar(100), DateTime,112)) ,DateTime from tblExtract 

select tranDate, min(tranTime) as 'min' , max(tranTime) as 'max' from @tmp 
group by tranDate 

问题是它只显示分钟,一天中的最大值不是每个employee_number。我该如何解决这个问题?

+0

尝试使用“Employee_Number”进行分组 – Bharadwaj

+0

@Bharadwaj我已经做到了,但它返回一个错误。 –

+1

您在tmp表中没有“Employee_Number”。 – Bharadwaj

回答

0

首先,你必须添加EMPLOYEE_NUMBER到TMP表。

接下来,在最后声明中,你必须写

group by tranDate, Employee_Number 

的原因是,你会得到对应于每个TRANDATE和EMPLOYEE_NUMBER对最小,按要求。

2

试试这个,假设DateTime列不存储为一个字符串

select Employee_Number, Cast([DateTime] as Date) as 'DateTime', MIN([DateTime]) as 'MIN', MAX([DateTime]) as 'MAX' 
from Employee_Table 
group by Employee_Number, Cast([DateTime] as Date) 
+0

我认为它完成了这项工作。演示:http://sqlfiddle.com/#!6/05700e/5 – Lucio

+0

是的,我想这是最简单的方法来做到这一点,而不必创建一个临时表 – Leo

1
Select DateAdd(d, 0, DateDiff(d, 0, DateTime)) tranDate, Employee_Number, min(DateTime), max(DateTime) 
From tblExtract 
Group By 
DateAdd(d, 0, DateDiff(d, 0, DateTime)), Employee_Number 
1

在MSSQL:

select 
    emloyee_id, 
    convert(date,datetime) as Date_time 
    min(datetime) as Min_date, 
    max(datetime) as Max_date 
from tblEmployee 
group by emloyee_id,convert(date,datetime) 

组基于EMPLOYEE_ID和日期时间(只提取日期部分)会给我们每EMPLOYEE_ID和日期的组合一排,那么我们可以选择每个组

的最小值和最大值