powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / BETWEEN
8 сообщений из 8, страница 1 из 1
BETWEEN
    #39770381
skyner81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как сделать?

SELECT KM
FROM TAB1
INNER JOIN TAB2
WHERE KM BETWEEN NACH AND KON

Получаю
КМ
2
3
7
8
9
...
Рейтинг: 0 / 0
BETWEEN
    #39770401
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
select t1.km, nvl2(t2.nach, 'ДА','') "BETWEEN"
  from tab1 t1, tab2 t2
 where t1.km between t2.nach(+) and t2.kon(+)
...
Рейтинг: 0 / 0
BETWEEN
    #39770410
skyner81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,
Спасибо огромное, в этом примере работает отлично. А вот тут почему то нет. Подскажите где ошибка?

SELECT DISTINCT
t1.ID,
t1.NAPR,
t1.KM,
t1.PUT,
t1.KMNACH,
nvl2(t2."begin_km", 'ДА','') "BETWEEN"
FROM A_REM2017 t1, A_GB t2
WHERE t1.NAPR = t2."up_nom"
AND t1.PUT = t2."put_nom"
AND t1.KMNACH BETWEEN t2."begin_km" (+) AND t2."end_km" (+)
...
Рейтинг: 0 / 0
BETWEEN
    #39770411
skyner81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, разобрался. Спасибо.

SELECT DISTINCT t1.ID,
t1.NAPR,
t1.KM,
t1.PUT,
t1.KMNACH,
nvl2(t2."begin_km", 'ДА','') "BETWEEN"
FROM A_REM2017 t1, A_GB t2
WHERE t1.KMNACH BETWEEN t2."begin_km"(+) AND t2."end_km"(+)
AND t1.NAPR = t2."up_nom"(+)
AND t1.PUT = t2."put_nom"(+)
...
Рейтинг: 0 / 0
BETWEEN
    #39770528
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

NACH AND KON не должны пересекатся

....
stax
...
Рейтинг: 0 / 0
BETWEEN
    #39770576
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyner81,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t1 as
 (select level lev from dual connect by rownum <= 10),
t2 as
 (select 2 nach, 3 kon from dual union select 6 nach, 8 kon from dual)
---------------------------------------------------------------- 
select t1.lev, DECODE(tt.lev,NULL,'N','Y')
  from t1,
       (select t1.lev from t1, t2 where t1.lev between t2.nach and t2.kon) tt
 where t1.lev = tt.lev(+)
order by t1.lev



немного творчества для ребят из курилки)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
with t1 as
 (select level lev from dual connect by rownum <= 10),
t2 as
 (select 2 nach, 3 kon from dual union select 6 nach, 8 kon from dual)
---------------------------------------------------------------- 
select lev, flag
  from (select row_number() over(partition by lev order by flag desc) rn,
               lev,
               flag
          from (select distinct lev, flag
                  from (select t1.lev,
                               case
                                 when t1.lev between t2.nach and t2.kon then
                                  'Y'
                                 else
                                  'N'
                               end flag
                          from t1, t2)))
 where rn = 1
 order by lev
...
Рейтинг: 0 / 0
BETWEEN
    #39770797
skyner81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_Demin,
Спасибо. Расскажите в чем отличие этих двух вариантов?

select t1.km, nvl2(t2.nach, 'ДА','') "BETWEEN"
from tab1 t1, tab2 t2
where t1.km between t2.nach(+) and t2.kon(+)



with t1 as
(select level lev from dual connect by rownum <= 10),
t2 as
(select 2 nach, 3 kon from dual union select 6 nach, 8 kon from dual)
----------------------------------------------------------------
select t1.lev, DECODE(tt.lev,NULL,'N','Y')
from t1,
(select t1.lev from t1, t2 where t1.lev between t2.nach and t2.kon) tt
where t1.lev = tt.lev(+)
order by t1.lev
...
Рейтинг: 0 / 0
BETWEEN
    #39770800
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyner81Anton_Demin,
Спасибо. Расскажите в чем отличие этих двух вариантов?


імхо
тем что второй хуже

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


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