2014-10-17 3 views
1

SQL Server 2008에는 2 개의 테이블이 있습니다. 소스 테이블에는 useriddate (datetime)의 두 필드가 있습니다. 목표 테이블에는 - userid, Day, startHourEndHour -의 4 개의 필드가 있습니다. 반복되는 요일없이 대상 테이블에서 두 필드 (startHour end EndHour)로 추출 할 반복 요일을 찾아야합니다.어떻게 datetime 필드에서 시작 시간과 종료 시간 가져 오기 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

관련 문제