Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как сформировать запрос / 12 сообщений из 12, страница 1 из 1
20.03.2018, 12:13
    #39617395
kaktus1983
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Добрый день.
Подскажите как получить из таблицы

DTVRPOLOGPOD04.03.201823:49:323604.03.201823:50:08Р3604.03.201823:51:41Р3604.03.201823:53:12К3604.03.201823:54:51К3604.03.201823:58:503704.03.201823:59:22Р3705.03.201800:00:55Р3705.03.201800:02:31К3705.03.201800:03:39К3705.03.201800:08:413805.03.201800:09:15Р3805.03.201800:10:49К3805.03.201800:12:20К3805.03.201800:14:58Р38
результат вида

DT_FR DT_TO POLOG POD04.03.2018 23:50:0804.03.2018 23:54:51РРКК3604.03.2018 23:59:2205.03.2018 00:03:39РРКК3705.03.2018 00:09:1505.03.2018 00:14:58РККР38

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE SYS_POD (
    DT     DATE,
    VR     TIME,
    POLOG  CHAR(1),
    POD    INTEGER
);



POD изменяется от 0 до 80 (примерно), потом начинает заново, т.е. не уникально.
POLOG когда пуст - пропускаем. Кол-во сгруппированых строк не обязательно 4.

Stored procedure сделать не проблема, а прямым запросом не могу сообразить.
Спасибо)
...
Рейтинг: 0 / 0
20.03.2018, 12:17
    #39617401
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
kaktus1983, как-как... Прочесть Руководство по языку SQL СУБД Firebird и сделать.
Это одно из самых лёгких заданий, которые мог задать препод.
...
Рейтинг: 0 / 0
20.03.2018, 12:21
    #39617404
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
rdb_dev,

мммм... ну вообще-то не совсем. Если чисто по данным пользователя то да задание лёгкое, но если у него будет что-то такое

DTVRPOLOGPOD04.03.201823:49:323604.03.201823:50:08Р3604.03.201823:51:41Р3604.03.201823:53:12К3604.03.201823:54:51К3604.03.201823:58:503704.03.201823:59:22Р3705.03.201800:00:55Р3705.03.201800:02:31К3705.03.201800:03:39К3705.03.201800:08:413805.03.201800:09:15Р3805.03.201800:10:49К3805.03.201800:12:20К3805.03.201800:14:58Р3806.03.201823:49:323606.03.201823:50:08Р3606.03.201823:51:41Р3606.03.201823:53:12К3606.03.201823:54:51К36
результат вида

DT_FR DT_TO POLOG POD04.03.2018 23:50:0804.03.2018 23:54:51РРКК3604.03.2018 23:59:2205.03.2018 00:03:39РРКК3705.03.2018 00:09:1505.03.2018 00:14:58РККР3806.03.2018 23:50:0806.03.2018 23:54:51РРКК36

то легко уже не выкрутиться. А я как понимаю это и нужно
...
Рейтинг: 0 / 0
20.03.2018, 12:23
    #39617405
kaktus1983
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Симонов Денис,
Да, POD может периодически повторяться, период повторения непостоянен
...
Рейтинг: 0 / 0
20.03.2018, 12:57
    #39617447
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Симонов Денис, через CTE или через FOR в отсортированном курсоре - нефиг делать.
...
Рейтинг: 0 / 0
20.03.2018, 13:15
    #39617476
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
это опровергает

rdb_devЭто одно из самых лёгких заданий, которые мог задать препод.

Сделать то можно всё. Вопрос как сделать чтобы работало быстро. Через процедуру или EB без проблем.
Запросом легко не сделаешь, да и эффективность вряд ли будет хорошей
...
Рейтинг: 0 / 0
20.03.2018, 13:19
    #39617479
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
если 3.0 можно попытаться через оконные функции разрулить. Если автор даст скрипт для заполнения таблички с тестовыми данными можно подумать, но только при условии этих самых дублежей. Сам вбивать не буду.
...
Рейтинг: 0 / 0
20.03.2018, 13:36
    #39617493
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Симонов ДенисЗапросом легко не сделаешь, да и эффективность вряд ли будет хорошейЗависит от уточнения задачи...
Предположим, что POD, это идентификатор некоего технологического процесса, состоящего из P/K частей, который выполняется параллельно с другими технологическими процессами. Таким образом, записи в последовательности штампа времени могут чередовать идентификаторы POD выполняющихся параллельно тех.процессов, но у каждого тех.процесса есть время его запуска и время завершения. В таком случае, будет не сложно сделать через CTE.
...
Рейтинг: 0 / 0
20.03.2018, 14:04
    #39617530
kaktus1983
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Симонов Денис,

FB 2.5

Скрипт прилагаю
...
Рейтинг: 0 / 0
20.03.2018, 14:24
    #39617555
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
kaktus1983,

на 2.5 не интересно, тут по нормальному только в PSQL. Запросами будет очень медленно
...
Рейтинг: 0 / 0
20.03.2018, 15:01
    #39617587
kaktus1983
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
Симонов Денис, Да, в PSQL я сделал


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
POD_NO = -1;
  for
    select dt, vr, polog, pod
      from SYS_POD
      where pech = 12
      order by (dt + vr)
      into :dt, :vr, :polog, :pod
  do
    begin
      -- end last / start new pod
      if (:pod_no <> :pod) then
        begin
          -- end last
          if ((:POD_NO >= 0) and (:DT_FR is not null)) then suspend;
          -- start new pod
          DT_FR = dt + vr;
          POD_NO = pod;
          POD_TYPE = '';
          if (trim(POLOG) = '') then DT_FR = null;
        end
      -- middle part
      if ( trim(POLOG) > '' ) then
        begin
          if (:DT_FR is null) then DT_FR = dt + vr;
          POD_TYPE = POD_TYPE || POLOG;
          DT_TO = dt + vr;
        end
    end



Если не сложно, приведите пример как это можно сделать запросом в 3.0
Может стоит задуматься о переходе))
...
Рейтинг: 0 / 0
20.03.2018, 16:26
    #39617672
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как сформировать запрос
kaktus1983Stored procedure сделать не проблема, а прямым запросом не могу сообразить.
Спасибо)Так заверни тело твоей ХП в EXECUTE BLOCK и будет тебе запрос.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как сформировать запрос / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]