Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запрос на выборку по времени, выделение начального и конечного интерва 
:(
    Опции темы
bv7
Дата 6.5.2016, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2007

Репутация: нет
Всего: нет



Есть запрос на выборку данных из БД sybase anywhere 11
Запрос писал не я, поддержку по данному запросу вести не хотят, типа есть шаблон его и разбирай/модифицируй/оптимизируй и т.п.
Код

SELECT ID = ROW_NUMBER() OVER (order by CL.CLIENT_ID, PR.DATE_TIME)
            ,DATE_TIME_CNV = CONVERT(varchar, PR.DATE_TIME, 104) + ' ' + CONVERT(varchar, PR.DATE_TIME, 108)
            ,PR.DATE_TIME
            ,PR.MESS_ID
            ,CL.CLIENT_ID
            ,CL.SURNAME
            ,CL.NAME
            ,CL.PATR
INTO #tt1
FROM DBA.PROTOCOL PR
        INNER JOIN CLIENT CL
            ON (PR.CLIENT_ID = CL.CLIENT_ID)
        INNER JOIN ZONE Z
            ON (PR.ZONE_ID = Z.ZONE_ID)
WHERE PR.DATE_TIME BETWEEN CONVERT(DATETIME, '2016-02-01') AND CONVERT(DATETIME, '2016-03-01')

SELECT PROPUSK_ID = A.CLIENT_ID
       ,IN_DTIME = A.DATE_TIME_CNV 
       ,OUT_DTIME = B.DATE_TIME_CNV2
       ,SUBSTRING(A.ZONE_NAME, 0, CASE WHEN CHARINDEX(',', A.ZONE_NAME) = 0 THEN LEN(A.ZONE_NAME) ELSE CHARINDEX(',', A.ZONE_NAME) END)
       ,SUBSTRING(B.ZONE_NAME, 0, CASE WHEN CHARINDEX(',', B.ZONE_NAME) = 0 THEN LEN(B.ZONE_NAME) ELSE CHARINDEX(',', B.ZONE_NAME) END)
       ,TABEL_NUM = A.TABEL_NUM
       ,FIO = A.SURNAME + ' ' + A.NAME + ' ' + A.PATR
FROM #tt1 A
    INNER JOIN (
                    SELECT ID = ID - 1, DATE_TIME, DATE_TIME_CNV as DATE_TIME_CNV2, ZONE_NAME, SURNAME, NAME,  PATR
                    FROM #tt1 C WHERE MESS_ID = 86
               ) B
        ON (A.ID = B.ID)
WHERE A.MESS_ID = 85
ORDER BY IN_DTIME


Данные возвращаются не совсем корректно, а именно:
по факту имеем

1    '01.02.2016 07:55:37'    '2016-02-01 07:55:37.926'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №6 Шлагбаум'
2    '01.02.2016 07:55:37'    '2016-02-01 07:55:37.935'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №6 Шлагбаум V.I.P.'
3    '01.02.2016 07:59:26'    '2016-02-01 07:59:26.908'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
4    '01.02.2016 08:03:42'    '2016-02-01 08:03:42.107'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
5    '01.02.2016 08:50:53'    '2016-02-01 08:50:53.796'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №11 Проходная Турникет-2 ВХ'
6    '01.02.2016 09:15:46'    '2016-02-01 09:15:46.223'    86    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №11 Проходная Турникет-1 ВЫХ'
7    '01.02.2016 09:37:08'    '2016-02-01 09:37:08.366'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №1 Проходная Турникет-1 ВХ'
8    '01.02.2016 09:41:34'    '2016-02-01 09:41:34.987'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
9    '01.02.2016 09:44:52'    '2016-02-01 09:44:52.776'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
10    '01.02.2016 09:57:58'    '2016-02-01 09:57:58.354'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
11    '01.02.2016 11:03:04'    '2016-02-01 11:03:04.585'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
12    '01.02.2016 13:41:57'    '2016-02-01 13:41:57.568'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
13    '01.02.2016 13:45:07'    '2016-02-01 13:45:07.337'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
14    '01.02.2016 13:53:21'    '2016-02-01 13:53:21.647'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
15    '01.02.2016 14:05:39'    '2016-02-01 14:05:39.086'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
16    '01.02.2016 14:05:58'    '2016-02-01 14:05:58.985'    78    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
17    '01.02.2016 15:41:33'    '2016-02-01 15:41:33.067'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 1-й Этаж ВХОД'
18    '01.02.2016 16:21:08'    '2016-02-01 16:21:08.943'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
19    '01.02.2016 16:22:58'    '2016-02-01 16:22:58.538'    85    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'П.О. №4 2-й эт'
20    '01.02.2016 17:01:39'    '2016-02-01 17:01:39.013'    86    4194305    'Фамилия'    'Имя'    'Отчество'    '14048'    'Пост №5 Шлагбаум V.I.P.'

Запрос возвращает:

4199005    '01.02.2016 08:50:53'    '01.02.2016 17:01:39'    'П.О. №11 Проходная Турникет-2 ВХ'    'Пост №5 Шлагбаум V.I.P.'    'Фамилия Имя Отчество'

а должно так:


4199005    '01.02.2016 07:55:37'    '01.02.2016 17:01:39'    'П.О. №11 Проходная Турникет-2 ВХ'    'Пост №5 Шлагбаум V.I.P.'    'Фамилия Имя Отчество'
 
Посоветовали сгруппировать по датам (без времени) и клиентам с получением минимального времени входа и максимального времени выхода на каждую дату.
Каким образом делается эта группировка? Можно в синтаксисе mssql, по аналогии переписку под себя. Группировать надо во втором select'e?

Или по логике кода проконсультируйте. Особенно второй селект, в нем вроде как 2 строки в одну собирают. 


Это сообщение отредактировал(а) bv7 - 7.5.2016, 10:05
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1098 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.