निम्नलिखित क्रैंक पारियों की एक तालिका है। यह बिल्कुल स्पष्ट नहीं है कि आप क्या करना चाहते हैं, लेकिन आप यहां दिखाए गए कुछ गणनाओं का उपयोग करके किसी घटना की तारीख/समय से बदलाव का निर्धारण करने वाले इंजीनियर को उलटने में सक्षम होना चाहिए।
संपादित करें :सही किया गया case
2/2/3/2 पैटर्न को संभालने के लिए।
; with Samples as (
-- Start at the beginning of 2013.
select Cast( '01-01-2013 00:00' as DateTime ) as Sample
union all
-- Add hours up to the desired end date.
select DateAdd( hour, 1, Sample )
from Samples
where Sample <= '2013-01-30'
),
ExtendedSamples as (
-- Calculate the number of days since the beginning of the first shift on 1/1/2013.
select Sample, DateDiff( hour, '01-01-2013 07:00', Sample ) / 24 as Days
from Samples ),
Shifts as (
-- Calculate the shifts for each day.
select *,
case when ( Days + 1 ) % 9 in ( 0, 1, 4, 5 ) then 'C/D' else 'A/B' end as Shifts
from ExtendedSamples )
select *,
case when DatePart( hour, Sample ) between 7 and 18 then Substring( Shifts, 1, 1 ) else Substring( Shifts, 3, 1 ) end as Shift
from Shifts
option ( maxrecursion 0 )