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

Откуда: Запорожье
Сообщений: 54376
Интересно, мне одному не нравится такой автоформат?
select sum(x) x, min(y) y 
  from (select sum(sign_beg) over(order by y desc) - sign_beg group_by, d.* 
          from (select case when sum(x) over(partition by n order by y desc) >= 0 then y else 0 end sign_beg, c.* 
                  from (select sum(sign_end) over(order by y) - sign_end n, b.* 
                          from (select case when lead(x) over(order by y) > 0 and x < 0 then y else 0 end sign_end, a.* 
                                  from a) b) c) d)


я всегда переписываю примерно так:
SELECT SUM(x) x, MIN(y) y 
  FROM (
        SELECT SUM(sign_beg) OVER(ORDER BY y desc) - sign_beg GROUP_BY, d.* 
          FROM (
                SELECT CASE WHEN SUM(x) OVER(PARTITION BY n ORDER BY y desc) >= 0 THEN y ELSE 0 END sign_beg, c.* 
                  FROM (
                        SELECT SUM(sign_end) OVER(ORDER BY y) - sign_end n, b.* 
                          FROM (
                                SELECT CASE WHEN lead(x) OVER(ORDER BY y) > 0 AND x < 0 THEN y ELSE 0 END sign_end, A.* 
                                  FROM A
                                ) b
                       ) c
                ) d
        )
27 июл 11, 11:09    [11032548]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
Elic
Member

Откуда:
Сообщений: 29976
Хочешь, чтобы что-то было сделано хорошо? - Сделай это сам.

P.S. В мире не существует двух "автоформатеров"?
27 июл 11, 11:20    [11032635]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
_plus_
Member

Откуда:
Сообщений: 43
andreymx,

дело привычки, я над форматом не задумывался, можно case написать:

case
   when
       then
else
end

вот просто не хотел я форматировать, ну лень мне было ...
27 июл 11, 11:27    [11032694]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
_plus_,

case само собой
я в данном случае про принцип "закрывающая скобка под открывающей" (типа end под case-ом) для многострочных конструкций
27 июл 11, 12:12    [11033075]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
andreymx
какая разница как отформатирован запрос?
берем запрос. тыкаем 1 кнопку(нупо крайней мере в pl\sql Developer`e и SQL Navigatore`e) и получаем фломастер того цвета который нравится кушать. в чем проблема то?
27 июл 11, 13:46    [11033873]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
NETClient
Member

Откуда:
Сообщений: 461
А зачем тыкать если
Vint
какая разница как отформатирован запрос?
27 июл 11, 14:14    [11034142]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
-2-
Member

Откуда:
Сообщений: 15330
вот я полагаю, что "открываетель" не только скобка
   from (
   ) субкверя 
andreymx
"закрывающая скобка под открывающей"
кто скажет, что "не под", пусть первым бросит в меня камнем
SELECT SUM(x) x, MIN(y) y 
  FROM (
        SELECT SUM(sign_beg) OVER(ORDER BY y desc) - sign_beg GROUP_BY, d.* 
          FROM (
                SELECT CASE WHEN SUM(x) OVER(PARTITION BY n ORDER BY y desc) >= 0 THEN y ELSE 0 END sign_beg, c.* 
                  FROM (
                        SELECT SUM(sign_end) OVER(ORDER BY y) - sign_end n, b.* 
                          FROM (
                                SELECT CASE WHEN lead(x) OVER(ORDER BY y) > 0 AND x < 0 THEN y ELSE 0 END sign_end, A.* 
                                  FROM A
        ) b    ) c     ) d     ) 
27 июл 11, 14:23    [11034208]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
-2-
andreymx
"закрывающая скобка под открывающей"
кто скажет, что "не под", пусть первым бросит в меня камнем
SELECT SUM(x) x, MIN(y) y 
  FROM (
        SELECT SUM(sign_beg) OVER(ORDER BY y desc) - sign_beg GROUP_BY, d.* 
          FROM (
                SELECT CASE WHEN SUM(x) OVER(PARTITION BY n ORDER BY y desc) >= 0 THEN y ELSE 0 END sign_beg, c.* 
                  FROM (
                        SELECT SUM(sign_end) OVER(ORDER BY y) - sign_end n, b.* 
                          FROM (
                                SELECT CASE WHEN lead(x) OVER(ORDER BY y) > 0 AND x < 0 THEN y ELSE 0 END sign_end, A.* 
                                  FROM A
        ) b    ) c     ) d     ) 
как раз брошу
скобки явно перепутаны
27 июл 11, 14:30    [11034276]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
Vint
andreymx
какая разница как отформатирован запрос?
насколько легко посмотреть/выполнить цельный подзапрос во втором случае - настолько же затруднительно в первом

К сообщению приложен файл. Размер - 18Kb
27 июл 11, 14:38    [11034365]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
andreymx
ну так кто мешает настроить бьютифайлер так как нравится?

NETClient
учимся читать до конца. современные бьютифайлеры способны отформатировать практически любой запрос по один раз настроенному формату. так какая разница какой запрос Вам достался? лень 1 раз настроить? зачем что-то долго и нудно переписывать?
27 июл 11, 16:39    [11035338]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
Vint,

единого решения как такового быть не может...
или у меня нет таких умных форматтеров

обычно более-менее длинные кейсы я рисую в несколько строк

но есть и исключения...

вот примерчик (не конкретно рабочий, но похожие есть):
SELECT MAX(CASE WHEN T.order_by =  1 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_1,
       MAX(CASE WHEN T.order_by =  2 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_2,
       MAX(CASE WHEN T.order_by =  3 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_3,
       MAX(CASE WHEN T.order_by =  4 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_4,
       MAX(CASE WHEN T.order_by =  5 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_5,
       MAX(CASE WHEN T.order_by =  6 THEN CASE WHEN :p_date = TRUNC(aDATE) THEN T.stat4 ELSE T.stat2 END END) stat4_6
  FROM T
 GROUP BY T.id_str
если его форматнуть, получится весьма тяжело сопровождаемая каша...
+
  SELECT MAX(CASE
                WHEN T.order_by = 1
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_1,
         MAX(CASE
                WHEN T.order_by = 2
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_2,
         MAX(CASE
                WHEN T.order_by = 3
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_3,
         MAX(CASE
                WHEN T.order_by = 4
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_4,
         MAX(CASE
                WHEN T.order_by = 5
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_5,
         MAX(CASE
                WHEN T.order_by = 6
                THEN
                   CASE
                      WHEN :p_date = TRUNC(aDATE) THEN T.stat4
                      ELSE T.stat2
                   END
             END)
            stat4_6
    FROM T
GROUP BY T.id_str
27 июл 11, 17:24    [11035651]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
-2-
Member

Откуда:
Сообщений: 15330
andreymx
насколько легко посмотреть/выполнить цельный подзапрос во втором случае - настолько же затруднительно в первом
аргумент достаточно слабый. часто запрос не влезает в экран и как не увеличивай количество строк элегантным форматированием, быстрее выучить шорткаты (SQL Developer):
- встать в начало подзапроса
- alt+shift+}
- f9
27 июл 11, 19:30    [11036300]     Ответить | Цитировать Сообщить модератору
 Re: Насчет форматирования  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
-2-
andreymx
насколько легко посмотреть/выполнить цельный подзапрос во втором случае - настолько же затруднительно в первом
аргумент достаточно слабый. часто запрос не влезает в экран и как не увеличивай количество строк элегантным форматированием, быстрее выучить шорткаты (SQL Developer):
- встать в начало подзапроса
- alt+shift+}
- f9
понимать, что делает запрос, тоже будет SQL Developer?



неужели можно допустить наличие вот так отформатированных запросов?
    insert into tablexxx  (список полей)
     (select pr.MID,TRUNC(pr.DATETIME),pr.DATETIME,pr.P1,NULL,NULL,NULL,NULL from tableyyy pr,
     (select distinct id_perek from view_zzz where type_pu=1) v,
     (select MIN(r.TIME_N)+(5/1440) mn,MAX(r.TIME_K) mx from RASCH_tttt r where r.DATA=TRUNC(:p_date)) rs   
      where pr.mid=v.id_perek and
        pr.datetime BETWEEN rs.mn and rs.mx)
28 июл 11, 00:01    [11037030]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить