powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли упростить SQL
15 сообщений из 15, страница 1 из 1
Можно ли упростить SQL
    #40081822
GREMROX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как уменьшить количество строк с помощи WITH?
В WITH менять только условия
Код: sql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
SELECT
        PODR as "Подразделение",
     SUM(KOL_CHAS) AS "Кол-во часов",                          
      SUM(VID_102) as "102-Отпуск посл. пер прибыль",                  
      SUM(VID_104) as "104-Отпуск послед-го пер. ФЗП",                    
      SUM(VID_354) as "354-Доп отп по конракту тек",
      SUM(VID_356) as "356-Доп отп по кон послед",
      SUM(VID_357) as "357-Доп отп вредн усл тр тек",
      SUM(VID_359) as "359-Доп отп вредн усл тр пос",     
      SUM(ITOGO) as "Итого"
                      
  from             
(select
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  
  end as varchar(20)) AS PODR, --as "Подразделение",
round(sum(CASE p.fvidoplp WHEN 1 then p.fchasf ELSE 0 end),2) AS KOL_CHAS,
round(sum(case p.fvidoplp when 102 then p.fsumma else 0 end),2) as VID_102,--Отпуск посл. пер прибыль",
round(sum(case p.fvidoplp when 103 then p.fsumma else 0 end),2) as VID_103,--Районный коэфициент",
round(sum(case p.fvidoplp when 104 then p.fsumma else 0 end),2) as VID_104,--Отпуск посл-го пер. ФЗП",
round(sum(case p.fvidoplp when 353 then p.fsumma else 0 end),2) as VID_353,--Доп отп ненорм день послед м-ца
round(sum(case p.fvidoplp when 354 then p.fsumma else 0 end),2) as VID_354,--Доп отп по конракту тек м-ца
round(sum(case p.fvidoplp when 356 then p.fsumma else 0 end),2) as VID_356,--Доп отп по контракту послед м-ца
round(sum(case p.fvidoplp when 357 then p.fsumma else 0 end),2) as VID_357,--Доп отп вредн усл тр тек м-ца
round(sum(case p.fvidoplp when 359 then p.fsumma else 0 end),2) as VID_359,--Доп отп вредн усл тр послед м-ца 

round(sum(p.fsumma),2) as ITOGO

from NORMAL.SUMVIDOP p LEFT JOIN normal.persons ps ON ps.fnrec = p.ftperson
left join NORMAL.SPKAU s on s.fnrec = p."FKAUEXTR[3]"


where
  p.fmesn between :mes1 and :mes2 and p.fyearn = :god
  AND (ps.fsex = :sex1 OR ps.fsex = :sex2)
  AND p.fvidoplP in (1,102,104)
group by ROLLUP(
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  end as varchar(20)))

  INION

  select
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  
  end as varchar(20)) AS PODR, --as "Подразделение",
round(sum(CASE p.fvidoplp WHEN 1 then p.fchasf ELSE 0 end),2) AS KOL_CHAS,
round(sum(case p.fvidoplp when 102 then p.fsumma else 0 end),2) as VID_102,--Отпуск посл. пер прибыль",
round(sum(case p.fvidoplp when 103 then p.fsumma else 0 end),2) as VID_103,--Районный коэфициент",
round(sum(case p.fvidoplp when 104 then p.fsumma else 0 end),2) as VID_104,--Отпуск посл-го пер. ФЗП",
round(sum(case p.fvidoplp when 353 then p.fsumma else 0 end),2) as VID_353,--Доп отп ненорм день послед м-ца
round(sum(case p.fvidoplp when 354 then p.fsumma else 0 end),2) as VID_354,--Доп отп по конракту тек м-ца
round(sum(case p.fvidoplp when 356 then p.fsumma else 0 end),2) as VID_356,--Доп отп по контракту послед м-ца
round(sum(case p.fvidoplp when 357 then p.fsumma else 0 end),2) as VID_357,--Доп отп вредн усл тр тек м-ца
round(sum(case p.fvidoplp when 359 then p.fsumma else 0 end),2) as VID_359,--Доп отп вредн усл тр послед м-ца 

round(sum(p.fsumma),2) as ITOGO

from NORMAL.SUMVIDOP p LEFT JOIN normal.persons ps ON ps.fnrec = p.ftperson
left join NORMAL.SPKAU s on s.fnrec = p."FKAUEXTR[3]"


where
  p.fmesn between :mes1 and :mes2 and p.fyearn = :god
  AND (ps.fsex = :sex1 OR ps.fsex = :sex2)
  AND p.fvidoplP in (353,356,359)
group by ROLLUP(
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  end as varchar(20)))
   )
   GROUP BY PODR
  order by 1
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081832
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GREMROX
Как уменьшить количество строк с помощи WITH?
В WITH менять только условия
Код: sql
1.
2.
3.
4.
5.
6.
7.
...
  end as varchar(20)))

  INION  --- ???

  select
...

...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081833
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GREMROX,

ну, следует выделить такой запрос, который бы поставлял строки для всех вариантов, положить его в WITH и далее уже в WHERE основного запроса (или нескольких через UNION) отбирать необходимое

т.е. WITH он как бы временный VIEW
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081871
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
GREMROX,

ну, следует выделить такой запрос, который бы поставлял строки для всех вариантов, положить его в WITH и далее уже в WHERE основного запроса (или нескольких через UNION) отбирать необходимое

т.е. WITH он как бы временный VIEW

Кроик Семён имел в виду, говоря формальным языком, использовать Common Table Expressions (CTE), запрос распадется на множество небольших запросов и будет более удобочитаемым.
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081937
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашивать расшифровку подразделения в алгоритм отчёта - моветон
Хотя бы во вьюху уже
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081941
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
else 0 - в принципе, можно убрать

И округление суммы точно надо? У вас данные хранятся не округленные?
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40081957
GREMROX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна
missclick

andreymx
Данный SQL писался, когда В РБ были старые деньги.
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082017
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала уберите union.
Два запроса, объединенные им, отличаются только предикатом AND p.fvidoplP in (...)
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082018
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать вьюху на джойны
Перенести в неё алгоритм расшифровки подразделения
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082383
GREMROX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все что у меня получается вот это хрень
Код: sql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
WITH Svod1 as (
select
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  
  end as varchar(20)) AS PODR, --as "Подразделение",
round(sum(CASE p.fvidoplp WHEN 1 then p.fchasf ELSE 0 end),2) AS KOL_CHAS,
round(sum(case p.fvidoplp when 102 then p.fsumma else 0 end),2) as VID_102,--Отпуск посл. пер прибыль",
round(sum(case p.fvidoplp when 103 then p.fsumma else 0 end),2) as VID_103,--Районный коэфициент",
round(sum(case p.fvidoplp when 104 then p.fsumma else 0 end),2) as VID_104,--Отпуск посл-го пер. ФЗП",
round(sum(case p.fvidoplp when 353 then p.fsumma else 0 end),2) as VID_353,--Доп отп ненорм день послед м-ца
round(sum(case p.fvidoplp when 354 then p.fsumma else 0 end),2) as VID_354,--Доп отп по конракту тек м-ца
round(sum(case p.fvidoplp when 356 then p.fsumma else 0 end),2) as VID_356,--Доп отп по контракту послед м-ца
round(sum(case p.fvidoplp when 357 then p.fsumma else 0 end),2) as VID_357,--Доп отп вредн усл тр тек м-ца
round(sum(case p.fvidoplp when 359 then p.fsumma else 0 end),2) as VID_359,--Доп отп вредн усл тр послед м-ца 

round(sum(p.fsumma),2) as ITOGO

from NORMAL.SUMVIDOP p LEFT JOIN normal.persons ps ON ps.fnrec = p.ftperson
left join NORMAL.SPKAU s on s.fnrec = p."FKAUEXTR[3]"

where
  p.fmesn between :mes1 and :mes2 and p.fyearn = :god
  AND (ps.fsex = :sex1 OR ps.fsex = :sex2)
  AND p.fvidoplP in (1,102,104)
group by ROLLUP(
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  end as varchar(20)))
  ),
  
  svod2 as  (
  select
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  
  end as varchar(20)) AS PODR, --as "Подразделение",
round(sum(CASE p.fvidoplp WHEN 1 then p.fchasf ELSE 0 end),2) AS KOL_CHAS,
round(sum(case p.fvidoplp when 102 then p.fsumma else 0 end),2) as VID_102,--Отпуск посл. пер прибыль",
round(sum(case p.fvidoplp when 103 then p.fsumma else 0 end),2) as VID_103,--Районный коэфициент",
round(sum(case p.fvidoplp when 104 then p.fsumma else 0 end),2) as VID_104,--Отпуск посл-го пер. ФЗП",
round(sum(case p.fvidoplp when 353 then p.fsumma else 0 end),2) as VID_353,--Доп отп ненорм день послед м-ца
round(sum(case p.fvidoplp when 354 then p.fsumma else 0 end),2) as VID_354,--Доп отп по конракту тек м-ца
round(sum(case p.fvidoplp when 356 then p.fsumma else 0 end),2) as VID_356,--Доп отп по контракту послед м-ца
round(sum(case p.fvidoplp when 357 then p.fsumma else 0 end),2) as VID_357,--Доп отп вредн усл тр тек м-ца
round(sum(case p.fvidoplp when 359 then p.fsumma else 0 end),2) as VID_359,--Доп отп вредн усл тр послед м-ца 

round(sum(p.fsumma),2) as ITOGO

from NORMAL.SUMVIDOP p LEFT JOIN normal.persons ps ON ps.fnrec = p.ftperson
left join NORMAL.SPKAU s on s.fnrec = p."FKAUEXTR[3]"

where
  p.fmesn between :mes1 and :mes2 and p.fyearn = :god
  AND (ps.fsex = :sex1 OR ps.fsex = :sex2)
  AND p.fvidoplP in (353,356,359)
group by ROLLUP(
  cast(case 
    when length(p.ftabn) > 5 then --'Головная'
    case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
         case s.fcode
             when '01' then 'Головная'              
             when '20' then 'МЛТЦ'
             when '50' then 'МРЦЭС'
             when '60' then 'РСП'
           else case substr(p.ftabn,1,2)
                    when '20' then 'МЛТЦ'
                    when '50' then 'МРЦЭС'
                    when '60' then 'РСП'
                else 'UnKnown'
                end
           END
       else P.FPARAM         
       end
    ELSE 'Головная'
  end as varchar(20)))
  )

SELECT
        PODR as "Подразделение",
     SUM(KOL_CHAS) AS "Кол-во часов",                          
      SUM(VID_102) as "102-Отпуск посл. пер прибыль",                  
      SUM(VID_104) as "104-Отпуск послед-го пер. ФЗП",                    
      SUM(VID_354) as "354-Доп отп по конракту тек",
      SUM(VID_356) as "356-Доп отп по кон послед",
      SUM(VID_357) as "357-Доп отп вредн усл тр тек",
      SUM(VID_359) as "359-Доп отп вредн усл тр пос",     
      SUM(ITOGO) as "Итого"
                      
  from  
  (  
Select * From Svod1
union
select * From svod2
)
GROUP BY PODR
  order by 1


я никогда не работал с WITH.
Пытался выгрузить все в 1 и 2 ограничить спомощи where. нет такого поля
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082397
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GREMROX,

вы в своём запросе совершенно не используете преимуществ, которые даёт WIDTH
а он в вашем случае посволяет такие манипуляции (если хотите оставить UNION):

Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
WITH 
   Svod_1_2 as 
   (
      select
        case when p.fvidoplP in (1,102,104) then 1 
             when p.fvidoplP in (353,356,359) then 2
             else 0
        end as svod_nr,             
        cast(case 
          when length(p.ftabn) > 5 then --'Головная'
          case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
               case s.fcode
                   when '01' then 'Головная'              
                   when '20' then 'МЛТЦ'
                   when '50' then 'МРЦЭС'
                   when '60' then 'РСП'
                 else case substr(p.ftabn,1,2)
                          when '20' then 'МЛТЦ'
                          when '50' then 'МРЦЭС'
                          when '60' then 'РСП'
                      else 'UnKnown'
                      end
                 END
             else P.FPARAM         
             end
          ELSE 'Головная'
        
        end as varchar(20)) AS PODR, --as "Подразделение",
        round(sum(CASE p.fvidoplp WHEN 1 then p.fchasf ELSE 0 end),2) AS KOL_CHAS,
        round(sum(case p.fvidoplp when 102 then p.fsumma else 0 end),2) as VID_102,--Отпуск посл. пер прибыль",
        round(sum(case p.fvidoplp when 103 then p.fsumma else 0 end),2) as VID_103,--Районный коэфициент",
        round(sum(case p.fvidoplp when 104 then p.fsumma else 0 end),2) as VID_104,--Отпуск посл-го пер. ФЗП",
        round(sum(case p.fvidoplp when 353 then p.fsumma else 0 end),2) as VID_353,--Доп отп ненорм день послед м-ца
        round(sum(case p.fvidoplp when 354 then p.fsumma else 0 end),2) as VID_354,--Доп отп по конракту тек м-ца
        round(sum(case p.fvidoplp when 356 then p.fsumma else 0 end),2) as VID_356,--Доп отп по контракту послед м-ца
        round(sum(case p.fvidoplp when 357 then p.fsumma else 0 end),2) as VID_357,--Доп отп вредн усл тр тек м-ца
        round(sum(case p.fvidoplp when 359 then p.fsumma else 0 end),2) as VID_359,--Доп отп вредн усл тр послед м-ца 

        round(sum(p.fsumma),2) as ITOGO

      from NORMAL.SUMVIDOP p LEFT JOIN normal.persons ps ON ps.fnrec = p.ftperson
      left join NORMAL.SPKAU s on s.fnrec = p."FKAUEXTR[3]"

      where
        p.fmesn between :mes1 and :mes2 and p.fyearn = :god
        AND (ps.fsex = :sex1 OR ps.fsex = :sex2)
        AND p.fvidoplP in (1,102,104,353,356,359)    
      group by 
        case when p.fvidoplP in (1,102,104) then 1
             when p.fvidoplP in (353,356,359) then 2 
             else 0
        end,        
        ROLLUP(cast(case 
          when length(p.ftabn) > 5 then --'Головная'
          case when p.FPARAM not in ('Л','Бе','Кр','Вил') then
               case s.fcode
                   when '01' then 'Головная'              
                   when '20' then 'МЛТЦ'
                   when '50' then 'МРЦЭС'
                   when '60' then 'РСП'
                 else case substr(p.ftabn,1,2)
                          when '20' then 'МЛТЦ'
                          when '50' then 'МРЦЭС'
                          when '60' then 'РСП'
                      else 'UnKnown'
                      end
                 END
             else P.FPARAM         
             end
          ELSE 'Головная'
        end as varchar(20)))
   )

SELECT
        PODR as "Подразделение",
     SUM(KOL_CHAS) AS "Кол-во часов",                          
      SUM(VID_102) as "102-Отпуск посл. пер прибыль",                  
      SUM(VID_104) as "104-Отпуск послед-го пер. ФЗП",                    
      SUM(VID_354) as "354-Доп отп по конракту тек",
      SUM(VID_356) as "356-Доп отп по кон послед",
      SUM(VID_357) as "357-Доп отп вредн усл тр тек",
      SUM(VID_359) as "359-Доп отп вредн усл тр пос",     
      SUM(ITOGO) as "Итого"
                      
  from  
  (  
     Select * From Svod_1_2 where Svod_1_2.svod_nr=1
     union
     select * From Svod_1_2 where Svod_1_2.svod_nr=2
  )
GROUP BY PODR
  order by 1



хотя, как уже видно, в данном конкретном случае, UNION следует заменить на:

Код: plsql
1.
2.
  from Svod_1_2
  where Svod_1_2.svod_nr in (1,2) -- или даже без этой строчки
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082398
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
я же писал, WIDTH он как бы временный VIEW
то есть данные из него в теле запроса далее в секции FROM можно использовать несколько раз
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082427
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
не используете преимуществ, которые даёт WIDTH
Кроик Семён
WIDTH он как бы временный VIEW
Ты бы хоть терминологию выучил, прежде чем лезть учить.
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082430
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select * From Svod_1_2 where Svod_1_2.svod_nr=1
union
select * From Svod_1_2 where Svod_1_2.svod_nr=2

Не знаю, что там сверху
Но
Что-то в этом запросе явно лишнее
...
Рейтинг: 0 / 0
Можно ли упростить SQL
    #40082454
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

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


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