2014-03-25 91 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和日期的組合一排,那麼我們可以選擇每個組

的最小值和最大值