2014-10-17 106 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

相关问题