2009-04-15 4 views
0

私は、エンジニアが同意した時間帯に彼の仕事を訪れたかどうかを調べるためにクエリを作成しようとしています。タイムスロットSQLクエリ

Table Screenshot http://img24.imageshack.us/img24/1156/capturebcn.jpg

これは、これまでのところ、私のクエリです:

SELECT 
    v.[VISITDATE], 
    CONVERT(VARCHAR, v.[STARTTIME], 105) AS 'Startdate', 
    CONVERT(VARCHAR, v.[STARTTIME], 108) AS 'StartTime', 
    CONVERT(VARCHAR, v.[bookeddate], 105) AS 'BookedDate', 
    CONVERT(VARCHAR, t.[starttime], 108) AS 'TimeSlotStart', 
    CONVERT(VARCHAR, t.[endtime], 108) AS 'TimeSlotEnd', 
    v.[Status]   
FROM 
    [tbl_repair_visit] v 
    INNER JOIN [ltbl_TimeSlots] t ON v.timeslot = t.[Slot] 

'StartDate''StartTime'は、エンジニアが行った日時です。

'BookedDate'は、彼が行っていたはずの日付であり、'TimeSlotStart''TimeSlotEnd'は、彼が作業を開始したはずの時間の範囲を定義します。だから私は、彼が正しい時間に行ったかどうかを言うTrue/False値の列が必要です。

+0

合意された日付と合意されたタイムスロットを意味しますか? –

答えて

5
SELECT 
    CASE 
     WHEN StartDate = BookedDate AND StartTime BETWEEN TimeSlotStart and TimeSlotEnd 
      THEN 'True' 
     ELSE 'False' 
    END 
FROM 
    ... 
0

なぜ単に:

WHERE Startdate = BookedDate AND StartTime <= TimeSlotEnd AND StartTime >= TimeSlotStart