Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 BETWEEN  [new]
skyner81
Member

Откуда: Самара
Сообщений: 48
Подскажите как сделать?

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

Получаю
КМ
2
3
7
8
9

К сообщению приложен файл. Размер - 23Kb
6 фев 19, 19:25    [21803022]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17682
select t1.km, nvl2(t2.nach, 'ДА','') "BETWEEN"
  from tab1 t1, tab2 t2
 where t1.km between t2.nach(+) and t2.kon(+)
6 фев 19, 19:45    [21803049]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
skyner81
Member

Откуда: Самара
Сообщений: 48
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" (+)
6 фев 19, 20:15    [21803065]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
skyner81
Member

Откуда: Самара
Сообщений: 48
Все, разобрался. Спасибо.

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"(+)
6 фев 19, 20:20    [21803066]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1983
andrey_anonymous,

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

....
stax
7 фев 19, 10:13    [21803254]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
Anton_Demin
Member

Откуда: Ставрополь
Сообщений: 275
skyner81,

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


немного творчества для ребят из курилки)
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
7 фев 19, 11:34    [21803353]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
skyner81
Member

Откуда: Самара
Сообщений: 48
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
7 фев 19, 18:37    [21803783]     Ответить | Цитировать Сообщить модератору
 Re: BETWEEN  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1983
skyner81
Anton_Demin,
Спасибо. Расскажите в чем отличие этих двух вариантов?


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

....
stax
7 фев 19, 18:46    [21803790]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить