Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли упростить SQL / 15 сообщений из 15, страница 1 из 1
05.07.2021, 15:13
    #40081822
GREMROX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
Как уменьшить количество строк с помощи 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
05.07.2021, 15:25
    #40081832
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
GREMROX
Как уменьшить количество строк с помощи WITH?
В WITH менять только условия
Код: sql
1.
2.
3.
4.
5.
6.
7.
...
  end as varchar(20)))

  INION  --- ???

  select
...

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

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

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

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

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

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

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

andreymx
Данный SQL писался, когда В РБ были старые деньги.
...
Рейтинг: 0 / 0
06.07.2021, 10:12
    #40082017
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
Для начала уберите union.
Два запроса, объединенные им, отличаются только предикатом AND p.fvidoplP in (...)
...
Рейтинг: 0 / 0
06.07.2021, 10:14
    #40082018
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
Сделать вьюху на джойны
Перенести в неё алгоритм расшифровки подразделения
...
Рейтинг: 0 / 0
07.07.2021, 16:18
    #40082383
GREMROX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
все что у меня получается вот это хрень
Код: 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
07.07.2021, 16:55
    #40082397
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
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
07.07.2021, 17:08
    #40082398
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
P.S.
я же писал, WIDTH он как бы временный VIEW
то есть данные из него в теле запроса далее в секции FROM можно использовать несколько раз
...
Рейтинг: 0 / 0
07.07.2021, 20:37
    #40082427
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
Кроик Семён
не используете преимуществ, которые даёт WIDTH
Кроик Семён
WIDTH он как бы временный VIEW
Ты бы хоть терминологию выучил, прежде чем лезть учить.
...
Рейтинг: 0 / 0
07.07.2021, 20:45
    #40082430
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
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
07.07.2021, 22:36
    #40082454
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли упростить SQL
andreymx,

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


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