Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
Привет Всем, помогите пожалуйста, укажите где туплю.

Есть две темповые таблицы:
первая таблица - ID INT, BirthDate datetime (прмерно 2000 записей)
вторая таблица - MAID INT, shift varchar, RunHour int, RunDate int, StartTime datetime, EndTime datetime

в второй таблице 10 записей приерного содержания:

MAID Shift RunDate RunHour StartTime EndTime
11 Shift 1 233 18 1900-01-01 06:00:00 1900-01-01 18:30:00
12 Shift 1 233 18 1900-01-01 06:00:00 1900-01-01 18:30:00
11 Shift 2 233 18 1900-01-01 18:30:00 1900-01-01 06:00:00
12 Shift 2 233 18 1900-01-01 18:30:00 1900-01-01 06:00:00

SELECT
  MaxScan = (SELECT
    MAX(TD.BirthDate)
  FROM #W AS TD
  WHERE CAST(TD.BirthDate AS time) BETWEEN CAST(PA.StartTime AS time) AND CAST(PA.EndTime AS time)),
  PA.Shift
FROM dbo.#PA AS PA
LEFT OUTER JOIN #W AS W
  ON PA.MAID = W.MAID
  AND PA.MA = W.MA
  AND PA.RunHour = DATEPART(HOUR, W.BirthDate)
  AND PA.RunDate = CAST(W.BirthDate AS date)
WHERE PA.RunHour = 18
GROUP BY PA.Shift,
         PA.StartTime,
         PA.EndTime


в результате у меня должно получиться следующее:

MaxScan Shift
18:27:22 shift 1
18:55:22 shift 2

Можете пожалуйста помочь разобраться где бачина.
7 окт 14, 00:04    [16668963]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Добрый Э - Эх
Guest
Ckey,

Ты думаешь, конечно же, что всем понятно, что именно ты хочешь получить? Алгоритм получения результирующего набора данных прозрачен настолько, что просто невидим. Жди телепатов, счас они натрут свои хрустальные шары кофейной гущей и сразу выдадут тебе решение...
7 окт 14, 04:40    [16669233]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
Добрый Э - Эх
Ckey,

Ты думаешь, конечно же, что всем понятно, что именно ты хочешь получить? Алгоритм получения результирующего набора данных прозрачен настолько, что просто невидим. Жди телепатов, счас они натрут свои хрустальные шары кофейной гущей и сразу выдадут тебе решение...

мне нужно получить максимальное значенте времени в приделах shiftstart and shiftend колонках.
7 окт 14, 08:36    [16669360]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Ckey
мне нужно получить максимальное значенте времени в приделах shiftstart and shiftend колонках.
MAX(CAST(TD.BirthDate as time))
7 окт 14, 08:41    [16669366]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Ckey
мне нужно получить максимальное значенте времени в приделах shiftstart and shiftend колонках.
Нету в таблицах колонок shiftstart и shiftend
7 окт 14, 09:25    [16669460]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Если предположить, что #W - это
Ckey
первая таблица - ID INT, BirthDate datetime (прмерно 2000 записей)
то непонятно, откуда там взялись колонки W.MAID и W.MA...
Ckey
Можете пожалуйста помочь разобраться где бачина.
А чего сервер-то говорит?
7 окт 14, 09:28    [16669470]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
alexeyvg, пардон. название колонок в диапазоне которых нужно выбрать CAST(PA.StartTime AS time) и CAST(PA.EndTime AS time).

baracs, сервер возвращает.

К сообщению приложен файл. Размер - 1Kb
7 окт 14, 10:14    [16669611]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Ckey,

Оформите уже вопрос в соответствии с пунктом 6 Рекомендации по оформлению сообщений в форуме

Уже больше 100 просмотров темы, но еще никто не угадал, что вам надо.
7 окт 14, 10:38    [16669769]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Ruuu
... но еще никто не угадал, что вам надо.

исходя из
... PA.RunHour = DATEPART(HOUR, W.BirthDate) ... 

рискну предположить, что эта прога для роддома.
Кому еще может понадобиться час рождения?
7 окт 14, 10:46    [16669825]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
SQL2008, эти данные нужны для производственной системы, не для роддома :))
но альтерантива хорошая!
автор
Уже больше 100 просмотров темы, но еще никто не угадал, что вам надо.

мне нужно следующие данные,
время последнего Birthdate в промежутке между CAST(PA.StartTime AS time) и CAST(PA.EndTime AS time).

Скажем есть у меня меня период времени (Birthdate) 17-00-00 -> 17-59-29, и последний MAX(Birthdate) 17-59-29 (hh-mm-ss), тогда показать его так как он в промежутке между CAST(PA.StartTime AS time) и CAST(PA.EndTime AS time) где PA.StartTime = 06-00-00 и PA.EndTime = 18-30-00

есть у меня меня период времени (Birthdate) 18-00-00 -> 18:22:22 -> 18-55-29, и последний MAX(Birthdate) 18-55-29 (hh-mm-ss), тогда показать 18:22:22 так как он в промежутке между CAST(PA.StartTime AS time) и CAST(PA.EndTime AS time) где PA.StartTime = 06-00-00 и PA.EndTime = 18-30-00

Заранее спасибо за помощь!
7 окт 14, 11:32    [16670031]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
может кто-то помочь с запросом?

спасибо
7 окт 14, 23:43    [16673735]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Ckey
может кто-то помочь с запросом?
16669769
8 окт 14, 05:37    [16674054]     Ответить | Цитировать Сообщить модератору
 Re: MAX datetime  [new]
Ckey
Member

Откуда:
Сообщений: 56
Возвращаясь к теме,
версия: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4033.0 (X64)

есть две темпонвые такблицы:

CREATE TABLE #W
(
ID INT,
BirthDate datetime
)


CREATE TABLE #PA 
(
MAID int,
shift varchar (55),
RunHour int,
RunDate int,
StartTime datetime,
EndTime datetime
)


Мой запрос:

SELECT
  MaxScan = (SELECT
    MAX(TD.BirthDate)
  FROM #W AS TD
  WHERE CAST(TD.BirthDate AS time) BETWEEN CAST(PA.StartTime AS time) AND CAST(PA.EndTime AS time)),
  PA.Shift
FROM dbo.#PA AS PA
LEFT OUTER JOIN #W AS W
  ON PA.MAID = W.MAID
  AND PA.MA = W.MA
  AND PA.RunHour = DATEPART(HOUR, W.BirthDate)
  AND PA.RunDate = CAST(W.BirthDate AS date)
WHERE PA.RunHour = 18
GROUP BY PA.Shift,
         PA.StartTime,
         PA.EndTime


100 % не верый и возвращает абсолютно не то, что мне нада.

мне нужно получить сгрупированые данные за перод времени указамый между PA.StartTime и PA.EndTime
где начало смены будет PA.StartTime с 06:00 до PA.EndTime 18:30 название смены указываеться в PA.Shift (скажем смена 1)
и PA.StartTime с 18:30 до PA.EndTime 06:00 следующего дня.

результат примерно такой:

MAID Shift RunDate RunHour StartTime EndTime
11 Shift 1 233 18 1900-01-01 06:00:00 1900-01-01 18:30:00
12 Shift 1 233 18 1900-01-01 06:00:00 1900-01-01 18:30:00
11 Shift 2 233 18 1900-01-01 18:30:00 1900-01-01 06:00:00
12 Shift 2 233 18 1900-01-01 18:30:00 1900-01-01 06:00:00

Заранее спасибо за помощь!
12 окт 14, 13:32    [16693122]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить