powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
25 сообщений из 54, страница 1 из 3
Помогите оптимизировать запрос
    #39565607
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Есть запрос для отчета сверки:
Код: 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.
select 
 a1.mag,
 sum(a1.prih_do)+sum(a1.vozv_do)-sum(a1.rash_do)-sum(a1.prod_do)-sum(a1.rash_vper)+sum(a1.prih_vper)-sum(a1.prod_vper)+sum(a1.vozv_vper) ostss
from
(select 
  decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) mag,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'WO',f.primecost,0)) else 0 end rash_do,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'WI',f.primecost,0)) else 0 end prih_do,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'CS',f.primecost,0)) else 0 end prod_do,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'CR',f.primecost,0)) else 0 end vozv_do,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'WO',f.primecost,0)) else 0 end rash_vper,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'WI',f.primecost,0)) else 0 end prih_vper,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'CS',f.primecost,0)) else 0 end prod_vper,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') 
  then sum(decode(f.saletype,'CR',f.primecost,0)) else 0 end vozv_vper,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') then
   sum(decode(f.saletype,'CS',f.salesum,0)) else 0 end prod_vper3,
  case when f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY') 
  then  sum(decode(f.saletype,'CR',f.salesum,0)) else 0 end vozv_vper3
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 and decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) in (111,112,120,121,122)
group by decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom), f.saledate) a1
group by a1.mag


Суммирует себестоимость за месяц и остатки за весь период по магазинам 111,112,120,121,122
Выполняется полным сканированием таблицы.
Таблица supermag.ffmaprep гигов десять.
Запрос выполняется минут 10 (диски ssd)
Можно как-то с помощью аналитических функций или других способов оптимизировать запрос?
(Oracle 10g)
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565658
lYY,

запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать...
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565670
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYYпо магазинам 111,112,120,121,122Какой это процент от всех данных?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565671
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхlYY,

запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать...Ну если он уходит в темп, то оптимизировать есть чего.
10 гигов за 10 минут на SSD это что-то не вполне адекватное.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565673
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
EliclYYпо магазинам 111,112,120,121,122Какой это процент от всех данных?
там может быть любой список магазинов
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565678
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
dbms_photoshop10 гигов за 10 минут на SSD это что-то не вполне адекватное.
да, странно это
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565683
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Добрый Э - ЭхlYY,

запрос у тебя линейный. там оптимизировать совершенно нечего. тут, скорее, подход к получению нужных данных надо менять, а не запрос оптимизировать...
Тут как обычно всё. Разработчики написали эту хрень, которая забивает весь ввод-вывод и им плевать. А с меня пользователи спрашивают, почему сервер тормозит?!
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565693
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы предложил агрегировать данные на ежемесячной основе.
Затем уже выбирать из этих данных необходимые + месяц из supermag.ffmaprep

З.Ы.
Код: plsql
1.
f.saledate between to_date('01.11.2017','DD.MM.YYYY') and to_date('30.11.2017','DD.MM.YYYY')


=
Код: plsql
1.
2.
f.saledate >= to_date('01.11.2017','DD.MM.YYYY')
where f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565699
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY,

смотреть индексы какие есть, мож придется декоде переписать

или скажем для
'WI','CS','CR' тож раз посчитать на начало года

нет f.saledate>= поетому беда

.....
stax
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565701
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Dshedoo,

подумаем.

Уточнил объем таблицы, 48 Гб, 275 миллионов строк.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565705
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
индексы
Код: plsql
1.
2.
3.
4.
5.
6.
create index SUPERMAG.FFMAPREP_ARTICLE on SUPERMAG.FFMAPREP (ARTICLE)
create index SUPERMAG.FFMAPREP_DOC on SUPERMAG.FFMAPREP (SALEID, SALETYPE, SALESPECITEM)
create index SUPERMAG.FFMAPREP_LOCFROM on SUPERMAG.FFMAPREP (SALELOCATIONFROM, SALEDATE)
create index SUPERMAG.FFMAPREP_LOCTO on SUPERMAG.FFMAPREP (SALELOCATIONTO, SALEDATE)
create index SUPERMAG.FFMAPREP_SALEDATE on SUPERMAG.FFMAPREP (SALEDATE)
create index SUPERMAG.FFMAPREP_SUPPLIER on SUPERMAG.FFMAPREP (INCOMECLIENTINDEX)
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565723
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYYиндексы
Код: plsql
1.
2.
3.
4.
5.
6.
create index SUPERMAG.FFMAPREP_ARTICLE on SUPERMAG.FFMAPREP (ARTICLE)
create index SUPERMAG.FFMAPREP_DOC on SUPERMAG.FFMAPREP (SALEID, SALETYPE, SALESPECITEM)
create index SUPERMAG.FFMAPREP_LOCFROM on SUPERMAG.FFMAPREP (SALELOCATIONFROM, SALEDATE)
create index SUPERMAG.FFMAPREP_LOCTO on SUPERMAG.FFMAPREP (SALELOCATIONTO, SALEDATE)
create index SUPERMAG.FFMAPREP_SALEDATE on SUPERMAG.FFMAPREP (SALEDATE)
create index SUPERMAG.FFMAPREP_SUPPLIER on SUPERMAG.FFMAPREP (INCOMECLIENTINDEX)



убрать decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom)

считать отдельно для f.salelocationfrom=-2 in f.salelocationto (...
union all
f.salelocationfrom<>-2 in f.salelocationfrom (...


ps
автор BETWEEN

Оптимизатор всегда заменяет условие, использующее оператор
сравнения BETWEEN, эквивалентным условием, использующим
операторы сравнения <= и >=. Например, оптимизатор заменяет
первое из двух следующих условий на второе:

sal BETWEEN 2000 AND 3000

sal >= 2000 AND sal <= 3000


.....
stax
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565732
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYYdbms_photoshop10 гигов за 10 минут на SSD это что-то не вполне адекватное.
да, странно этоВерсия какая?
Приложи в спойлер вывод
Код: plaintext
select dbms_sqltune.report_sql_monitor('твой SQL ID') from dual
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565748
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
36.
37.
38.
39.
select 
 a1.mag,
 sum(a1.prih_do+a1.vozv_do-a1.rash_do-a1.prod_do-a1.rash_vper+a1.prih_vper-a1.prod_vper+a1.vozv_vper) ostss
from
(select 
  case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end mag,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WO'
    then sum(f.primecost) else 0 end rash_do,
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WI'
    then sum(f.primecost) else 0 end prih_do,   
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then sum(f.primecost) else 0 end prod_do,   
  case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then sum(f.primecost) else 0 end vozv_do,   
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WO'
    then sum(f.primecost) else 0 end rash_vper,   
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WI'
    then sum(f.primecost) else 0 end prih_vper,   
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then sum(f.primecost) else 0 end prod_vper,   
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then sum(f.primecost) else 0 end vozv_vper,    
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then sum(f.salesum) else 0 end prod_vper3,   
  case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then sum(f.salesum) else 0 end vozv_vper3    
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 and f.saletype in ('WO','WI','CS','CR')
 and --case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end in (111,112,120,121,122)
     (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom != -2 and f.salelocationfrom in (111,112,120,121,122))
      )
      
group by case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end, f.saledate) a1
group by a1.mag
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565771
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo
Код: plsql
1.
2.
3.
4.
5.
     (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom != -2 and f.salelocationfrom in (111,112,120,121,122))
      )



Dshedoo
Код: plsql
1.
2.
3.
4.
5.
     (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565810
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooDshedoo
Код: plsql
1.
2.
3.
4.
5.
     (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )



імхо плохо
f.salelocationfrom = -2 f.salelocationto = 999 f.salelocationfrom =111


ps
оракля юзает ф-цію
LNNVL(f.salelocationfrom = -2) and

....
stax
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565837
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY,

Я сейчас что-то набросаю, но вот вопрос, А зачем делать group by по f.saledate если больше его не использовать?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565846
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
select 
 a1.mag,
 sum(a1.prih_do+a1.vozv_do-a1.rash_do-a1.prod_do-a1.rash_vper+a1.prih_vper-a1.prod_vper+a1.vozv_vper) ostss
from
(select 
  case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end mag,
  sum(case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WO'
    then f.primecost else 0 end) rash_do,
  sum(case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WI'
    then f.primecost else 0 end) prih_do,   
  sum(case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then f.primecost else 0 end) prod_do,   
  sum(case when f.saledate<to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then f.primecost else 0 end) vozv_do,   
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WO'
    then f.primecost else 0 end) rash_vper,   
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'WI'
    then f.primecost else 0 end) prih_vper,   
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then f.primecost else 0 end) prod_vper,   
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then f.primecost else 0 end) vozv_vper,    
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CS'
    then f.salesum else 0 end) prod_vper3,   
  sum(case when f.saledate >= to_date('01.11.2017','DD.MM.YYYY') and f.saletype = 'CR'
    then f.salesum else 0 end) vozv_vper3    
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 and f.saletype in ('WO','WI','CS','CR')
 and 
--
--1)
    case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end in (111,112,120,121,122)
--2)
     (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )
--
group by case when f.salelocationfrom = -2 then f.salelocationto else f.salelocationfrom end) a1
group by a1.mag



Так лучше?
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565865
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lYY,

По быстрому получилось что-то такое:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select 
  decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) mag,
  sum( case f.saletype when 'WO' then -1*f.primecost /*-1 rash_do_vper,*/
                       when 'WI' then    f.primecost /*+1 prih_do_vper,*/
                       when 'CS' then -1*f.primecost /*-1 prod_do_vper,*/
                       when 'CR' then    f.primecost /*+1 vozv_do_vper,*/
                       else 0 end 
                       ) ostss
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 /*and decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) in (111,112,120,121,122)*/
      (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )
group by decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom)



Хотя и не проверял =)
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565887
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
MaximaXXLlYY,

Я сейчас что-то набросаю, но вот вопрос, А зачем делать group by по f.saledate если больше его не использовать?
это не я писал, я админ просто)

Всем спасибо, я позже протестирую и по результатам отпишусь.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565913
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

Else 0 подменить на where f.saletype in ('WO','WI','CS','CR')

А так прям перфекто)
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565918
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
Взял исходный запрос на один магазин - 2 минуты, полное сканирование.
Сделал через union all, как выше посоветовали. Идет по индексам, выполняется 2 секунды.
Отправил разработчикам, путь тестируют.
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565923
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
MaximaXXLlYY,

По быстрому получилось что-то такое:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select 
  decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) mag,
  sum( case f.saletype when 'WO' then -1*f.primecost /*-1 rash_do_vper,*/
                       when 'WI' then    f.primecost /*+1 prih_do_vper,*/
                       when 'CS' then -1*f.primecost /*-1 prod_do_vper,*/
                       when 'CR' then    f.primecost /*+1 vozv_do_vper,*/
                       else 0 end 
                       ) ostss
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 /*and decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) in (111,112,120,121,122)*/
      (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )
group by decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom)



Хотя и не проверял =)

Не проходит вот эта строка:
Код: plsql
1.
(f.salelocationfrom = -2 and f.salelocationto in (120))
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565932
lYY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lYY
Гость
вот так работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select 
  decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) mag,
  sum( case f.saletype when 'WO' then -1*f.primecost /*-1 rash_do_vper,*/
                       when 'WI' then    f.primecost /*+1 prih_do_vper,*/
                       when 'CS' then -1*f.primecost /*-1 prod_do_vper,*/
                       when 'CR' then    f.primecost /*+1 vozv_do_vper,*/
                       else 0 end 
                       ) ostss
from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 /*and decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) in (111,112,120,121,122)*/
 and
      (
      (f.salelocationfrom = -2 and f.salelocationto in (120))
     or
      (f.salelocationfrom in (120))
      )
group by decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom)


но дольше, 86 секунд, идет bitmap convertion
...
Рейтинг: 0 / 0
Помогите оптимизировать запрос
    #39565933
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo,

Там есть куда руки приложить ...
else 0 можно игнорить ... все равно null под суммой будет проигнорирован.
если добавлять
f.saletype in ('WO','WI','CS','CR')

то тогда уже так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select 
  decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) mag,
  sum(decode(f.saletype, 'WO', -1, 'CS', -1 , 1)*f.primecost) ostss

from supermag.ffmaprep f
where f.rectype=1
 and f.saledate<=to_date('30.11.2017','DD.MM.YYYY')
 and f.saletype in ('WO','WI','CS','CR')
 /*and decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom) in (111,112,120,121,122)*/
      (
      (f.salelocationfrom = -2 and f.salelocationto in (111,112,120,121,122))
     or
      (f.salelocationfrom in (111,112,120,121,122))
      )
group by decode(f.salelocationfrom,-2,f.salelocationto,f.salelocationfrom)



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


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