2014-10-17 41 views
1

我在sql Server 2008中有2個表。源表有兩個字段:useriddate(datetime)。目標表有4個字段: - useridDaystartHourEndHour - 。我需要找到重複的日期來提取到目標表中的兩個字段(startHour end EndHour),而不是重複一天。如何從日期時間字段獲取開始小時數和結束小時數SQLServer

源表:

UserID TheDate 
------ ----------------------- 
0001 2014-07-23 08:18:02.000 
0001 2014-07-23 16:04:02.000 
0002 2014-07-23 08:00:00.000 
0003 2014-07-23 09:00:00.000 

目標表:

UserID TheDate StartHour  EndHour 
------ ---------- ---------------- ---------------- 
0001 2014-07-23 08:18:02   16:04:02 
0002 2014-07-23 08:00:00   NULL 
0003 2014-07-23 09:00:00   NULL 

回答

0
SELECT UserID 
     ,DateOnly 
     ,CONVERT(time, MIN(TheDate)) AS StartHour 
     ,CASE WHEN MAX(TheDate) = MIN(TheDate) 
      THEN NULL 
      ELSE CONVERT(time, MAX(TheDate)) 
     END AS EndHour 
FROM #T 
    CROSS APPLY (
     SELECT CONVERT(date, TheDate) AS DateOnly 
    ) AS CA1 
GROUP BY UserID 
     ,DateOnly 
+0

這兩種解決方案工作,但我喜歡這個,因爲它是最簡單的 – HHungria 2014-10-17 13:43:38

相關問題