
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.08.2018, 16:41
|
|||
|---|---|---|---|
|
|||
Вывод пересечений между датами |
|||
|
#18+
Друзья, выручайте. create table t as select 'A' FIO,to_date('01.08.2018','dd.mm.yyyy') startdate, to_date('02.08.2018','dd.mm.yyyy') enddate from dual union all select 'B',to_date('03.08.2018','dd.mm.yyyy'), to_date('04.08.2018','dd.mm.yyyy') from dual union all select 'C',to_date('05.08.2018','dd.mm.yyyy'), to_date('12.08.2018','dd.mm.yyyy') from dual union all select 'D',to_date('12.08.2018','dd.mm.yyyy'), to_date('16.08.2018','dd.mm.yyyy') from dual union all select 'D',to_date('17.08.2018','dd.mm.yyyy'), to_date('22.08.2018','dd.mm.yyyy') from dual union all select 'D',to_date('18.08.2018','dd.mm.yyyy'), to_date('20.08.2018','dd.mm.yyyy') from dual union all select 'D',to_date('19.08.2018','dd.mm.yyyy'), to_date('22.08.2018','dd.mm.yyyy') from dual union all select 'D',to_date('17.08.2018','dd.mm.yyyy'), to_date('23.08.2018','dd.mm.yyyy') from dual ; create or replace function f return sys.odcivarchar2list as dt date := to_date('01.01.1901','dd.mm.yyyy'); result sys.odcivarchar2list := sys.odcivarchar2list(); begin for i in (select rowid, t.* from t) loop if i.startdate > dt then dt := i.enddate; result.extend; result(result.count) := rowidtochar(i.rowid); end if; end loop; return result; end; select * from t where rowid in (select chartorowid(column_value) from table(f)); Нужно, чтобы выводило все пересечения по датам с фио D. Т.е. запросы выдавал строки с ФИО т.к. каждая из дат попадает в уже имеющиеся диапазоны у данного фио. Пожалуйста, подскажите, что поправить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.08.2018, 17:26
|
|||
|---|---|---|---|
|
|||
Вывод пересечений между датами |
|||
|
#18+
Можно использовать данный запрос Код: plsql 1. 2. 3. 4. Конечно тут есть изъян, что если будут 2 одинаковых отрезка, для одного fio, то он их не выдаст, но это решается добавлением поля id и переделыванием запроса Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.08.2018, 17:30
|
|||
|---|---|---|---|
|
|||
Вывод пересечений между датами |
|||
|
#18+
Ну же, кто помнит про секретный недокументированный оператор типа пересечения дат Или здесь не об этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.08.2018, 17:41
|
|||
|---|---|---|---|
|
|||
Вывод пересечений между датами |
|||
|
#18+
Не знал что такое есть в оракле Код: plsql 1. но вопрос все же в нахождении пользователей у которых есть пересечение со своими интервалами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1883565]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 493ms |

| 0 / 0 |
