sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server-sporing af planlagte skift, når dagen varierer

Det følgende viser en tabel over skift. Det er ikke helt klart, hvad du vil gøre, men du bør være i stand til at omvendt manipulere at bestemme skiftet fra datoen/klokkeslættet for en begivenhed ved hjælp af nogle af beregningerne vist her.

REDIGER :Rettet case at håndtere til 2/2/3/2 mønster.

; 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 )


  1. MySQL - VÆLG, JOIN

  2. Eksporter kun visninger i Postgres

  3. Funktion call in where klausul

  4. Ignorer mysql-fejlmeddelelser, når du udfører en sql-fil