Следното показва таблица на смените. Не е съвсем ясно какво искате да направите, но трябва да можете да проектирате обратно, определяйки изместването от дата/час на събитие, като използвате някои от изчисленията, показани тук.
РЕДАКТИРАНЕ :Коригиран регистр
за обработка на шаблон 2/2/3/2.
<предварителен код>; с образци като ( -- Започнете в началото на 2013 г. изберете Cast( '01-01-2013 00:00' като DateTime ) като примерен съюз всички -- Добавете часове до желаната крайна дата. изберете DateAdd( час, 1 , Sample ) от Samples where Sample <='2013-01-30' ), ExtendedSamples as ( -- Изчислете броя на дните от началото на първата смяна на 1/1/2013. изберете Sample, DateDiff( час, ' 01-01-2013 07:00', проба ) / 24 като дни от извадки), смени като ( -- Изчислете смените за всеки ден. изберете *, случай, когато ( дни + 1 ) % 9 в ( 0, 1, 4, 5 ) след това 'C/D' иначе 'A/B' край като Shifts от ExtendedSamples ) изберете *, случай, когато DatePart( час, Sample ) между 7 и 18 тогава Substring( Shifts, 1, 1 ) else Substring( Shifts , 3, 1) завършват като Shift от опцията Shifts ( maxrecursion 0 )