Как получить правильное время - PullRequest
0 голосов
/ 31 января 2011

Использование SQL Server

Table1

ID Actual_Intime Actual_Outtime

001 08:00:00 18:00:00 (HHMMSS)
002 20:00:00 06:00:00
003 05:00:00 14:00:00
004 19:30:00 03:30:00
...

...

Actual_Intime Datatype is nvarchar
Actual_Outtime Datatype is nvarchar

Мне нужно проверить время сотрудника, например

"Еслиouttime меньше, чем Intime, тогда он должен принимать время и время в один и тот же день. "

", если время ожидания больше, чем время, тогда оно должно принимать время в тот же день, а время выхода должно быть на следующий день..

Table2

ID Date Time

001 20100102 06:00:00
001 20100102 08:00:00
001 20100102 14:00:00
001 20100102 19:00:00
002 20100102 19:00:00
002 20100102 21:00:00
002 20100103 03:00:00
002 20100103 07:00:00
...,

...

Date Datatype is nvarchar
Time Datetype is nvarchar

Date Format: yyyymmdd
Time Format: HHMMSS

Мне нужно взять Min (время) и Max (время) из table2, но table2 сравнитьфактическое время и фактическое время ожидания из таблицы1

Ожидаемый результат

ID Date Intime Outtime

001 20100102 06:00:00 19:00:00 

(Здесь Actual_Outtime меньше, чем Actual_Intime из таблицы1, поэтому в таблице 2 он должен принимать время и время в один и тот же день)

002 20100102 19:00:00 07:00:00 

(Здесь Actual_Outtime больше, чем Actual_Intime из таблицы1, поэтому в таблице 2 он должен принимать время следующего дня в качестве времени ожидания)

Как получить значения времени и времени сопоставления с фактическим временем и фактическим временемOuttime from Table1.

Нужна помощь по запросу

1 Ответ

2 голосов
/ 31 января 2011

Не уверен, действительно ли здесь нужен Table1.Я понимаю, что Table2 содержит всю необходимую информацию для генерации таблицы результатов.

SELECT
  ID,
  date =    CONVERT(char(8), intime,  112),
  intime =  CONVERT(char(8), intime,  108),
  outtime = CONVERT(char(8), outtime, 108)
FROM (
  SELECT
    ID,
    intime =  MIN(dt),
    outtime = MAX(dt)
  FROM (
    SELECT
      ID,
      dt = CAST(Actual_Intime + ' ' + Actual_Outtime AS datetime)
    FROM Table2
  ) s
) m

Я предполагаю, что Table1.Actual_Intime соответствует MIN(CAST(Table2.Date + ' ' + Table2.Time AS datetime)), а Table1.Actual_Outtime - MAX(...), что выглядитсогласиться с приведенным описанием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...