2017-02-22 25 views
-1

Привет всем, меня попросили создать таблицу сотрудников, и это было прекрасно.Shift (Rota) Pattens Table SQL

SELECT ID, 
    EmployeeNo, 
    Surname, 
    Forename, 
    Team, 
    BadgeNo, 
    RotaType, 
    StartDate, 
    Flex, 
    DaliyHours, 
    CurrentTask, 
    LastUpdated, 
    LastUpdated_By 
FROM CHDS_Sandbox.dbo.emp_PeopleDHL; 

Я заметил, что у них был RotaType и спросил, почему.

Хорошо, мне жаль, что у них не было 56 разных ротов и они хотели, чтобы сотрудники могли сканировать штрих-код на своем значке, и он рассказал им, какие смены они работают в течение следующих 7 дней или месяцев.

Итак, я настраиваю 56 разных таблиц для каждого рота или есть способ, который я могу настроить на таблице и запустить запрос, который будет искать дату, а затем RotaType и вывести время, из-за которого они запускаются ?

+1

Ваш вопрос очень расплывчатый - пожалуйста, имейте в виду, что мы не видим ваш экран и понятия не имеем, что такое «Рота». Но, чтобы ответить на ваш первый вопрос: не создавайте 56 таблиц ... Создайте таблицу только для ротов и добавьте внешний ключ в таблицу DHL, которая ссылается на нее. Вы также можете посмотреть в 'JOIN' и' WHERE'. – Siyual

+0

Спасибо Siyual (Rota - график работы) Первый план состоял в том, чтобы иметь столбец для каждой роты и строки для каждого дня. Тогда, когда RotaType и скажут сегодня, перекрестите друг друга, это будет время, которое они начнут сегодня. –

+0

Сначала вам нужно выяснить, что такое _rota_. Возможно, «RotaId», «BaseDate» (дата начала цикла, просто чтобы синхронизировать всех), «DayNumber» (смещение в цикле), «ShiftNumber» (при условии, что есть общие сдвиги). Сдвиги будут определены в другой таблице, например. 'ShiftId',' StartTime', 'EndTime'. (Веселая часть обрабатывает сдвиги, которые охватывают полночь, т. Е. «StartTime»> «EndTime».) Что означает изменение сдвига или поворота, например. применяется ли оно ко всем сразу или только в начале следующего дня/месяца/цикла/лунного цикла? ... – HABO

ответ

0

Один стол должен быть в порядке.

create table RotaInfo (id INT identity (1,1), 
         RotaType INT, --should match the existing RotaType, this will be your FK 
         RotaName varchar(50), 
         DayOfMonth INT, 
         StartTime TIME, 
         EndTime TIME); 

Затем вы можете использовать календарь CTE, чтобы получить время начала и окончания для любого заданного дня для любого данного сотрудника.

+0

Я думаю, что у вас может быть это здесь. Я собираюсь пойти с этим немного посмотреть, смогу ли я заставить его работать. –

 Смежные вопросы

  • Нет связанных вопросов^_^