powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как сформировать запрос
12 сообщений из 12, страница 1 из 1
Подскажите как сформировать запрос
    #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
Подскажите как сформировать запрос
    #39617401
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983, как-как... Прочесть Руководство по языку SQL СУБД Firebird и сделать.
Это одно из самых лёгких заданий, которые мог задать препод.
...
Рейтинг: 0 / 0
Подскажите как сформировать запрос
    #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
Подскажите как сформировать запрос
    #39617405
kaktus1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
Да, POD может периодически повторяться, период повторения непостоянен
...
Рейтинг: 0 / 0
Подскажите как сформировать запрос
    #39617447
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, через CTE или через FOR в отсортированном курсоре - нефиг делать.
...
Рейтинг: 0 / 0
Подскажите как сформировать запрос
    #39617476
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это опровергает

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

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

FB 2.5

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

на 2.5 не интересно, тут по нормальному только в PSQL. Запросами будет очень медленно
...
Рейтинг: 0 / 0
Подскажите как сформировать запрос
    #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
Подскажите как сформировать запрос
    #39617672
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kaktus1983Stored procedure сделать не проблема, а прямым запросом не могу сообразить.
Спасибо)Так заверни тело твоей ХП в EXECUTE BLOCK и будет тебе запрос.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как сформировать запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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