powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / интервалы и коэффициенты, подскажите
3 сообщений из 3, страница 1 из 1
интервалы и коэффициенты, подскажите
    #39282625
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
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.
29.
30.
31.
32.
33.
34.
35.
with
v_data as
( select 20  as beg, 300 as en, 'V' as k from dual
  union all
  select 400 as beg, 450 as en, 'V' as k from dual
  union all
  select 700 as beg, 720 as en, 'V' as k from dual
),
s_data as
( select 0 as beg, 2300 as en, 'S' as k  from dual
  ),
interleave as
( select beg_int, end_int
    from
    ( select point as beg_int, lead(point) over (order by point) as end_int
        from
        ( select beg as point from v_data
          union
          select en as point from v_data
          union
          select beg as point from s_data
          union
          select en as point from s_data
        )
    )
    where end_int is not null
)
select beg_int, end_int, 
   case 
        when not exists (select 1 from v_data
                            where beg_int >= beg and end_int <= en) then 'S'
        else 
            'V'
   end as k 
from interleave;



он работает отлично, но хотелось бы иметь возможность простановки коэффициентов

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with
v_data as
( select 20  as beg, 300 as en, 'VI' as k from dual
  union all
  select 400 as beg, 450 as en, 'IV' as k from dual
  union all
  select 700 as beg, 720 as en, 'V' as k from dual
),
s_data as
( select 0 as beg, 1300 as en, 'S0' as k  from dual  union all
  select 1300 as beg, 2300 as en, 'S1' as k  from dual
  )



соответственно в результате проставляется коэффициент либо из группы s_data, если соответствующего отрезка в v_data нет, либо k из v_data.

можете подсказать в какую сторону ковырять запрос, а то что-то совсем годных идей нет
...
Рейтинг: 0 / 0
интервалы и коэффициенты, подскажите
    #39282734
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
интервалы и коэффициенты, подскажите
    #39284185
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
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.
29.
30.
31.
32.
33.
34.
with
v_data as
( select 20  as beg, 300 as en, 'V' as k from dual
  union all
  select 400 as beg, 450 as en, 'V' as k from dual
  union all
  select 700 as beg, 720 as en, 'V' as k from dual
),
s_data as
( select 0 as beg, 2300 as en, 'S' as k  from dual
  ),
interleave as
( select beg_int, end_int
    from
    ( select point as beg_int, lead(point) over (order by point) as end_int
        from
        ( select beg as point from v_data
          union
          select en as point from v_data
          union
          select beg as point from s_data
          union
          select en as point from s_data
        )
    )
    where end_int is not null
)
select beg_int, end_int, v.k as v_k
        , s.k as s_k
from interleave i
left join v_data v 
    on ( beg_int >= v.beg and end_int <= v.en)
left join s_data s 
    on ( beg_int >= s.beg and end_int <= s.en);



получилось как-то так
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / интервалы и коэффициенты, подскажите
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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