Конференция "Базы" » Вычисляемое поле в SQL [D7, MSSQL]
 
  • yurikon (12.07.11 13:55) [0]
    Добрый день!

    Имеется запрос:


    SELECT F1,  sum(f3),  'F2' =
     CASE When sum(f3) > 0 then A
             When sum(f3) < 0 then B END
    FROM table1



    и sum(f3) может несколько раз встречаться в запросе. Собственно, возник вопрос - сервер будет несколько раз вычислять эту сумму или сообразит, что она уже посчитана?

    Возможно, есть более грамотный вариант этого запроса?

    С уважением, Юрий.
  • Медвежонок Пятачок © (12.07.11 14:13) [1]
    select from select
  • b z (12.07.11 14:23) [2]
    with  ( select ) select
    ps: MSSQL >= 2005
  • Труп Васи Доброго © (21.09.11 11:41) [3]
    не знаю тонкостей MSSQL, но может такое прокатит
    SELECT F1,  sum(f3) As summ,  'F2' =
    CASE When summ > 0 then A
            When summ < 0 then B END
    FROM table1
  • stas © (21.09.11 12:05) [4]
    Труп Васи Доброго ©   (21.09.11 11:41) [3]
    В MSSQL такое не прокатит.

    yurikon   (12.07.11 13:55)
    Должен понять.
    1. 'F2' = зачем кавычки?
    Проверь скорость и посмотри план.
    свое го варианта
    и этого
    Select F1,SUMM,CASE When sum(SUMM) > 0 then A When sum(SUMM) < 0 then B END
    FROM
    (
    SELECT F1,  sum(f3) as SUMM,
    FROM table1
    ) AS Q

 
Конференция "Базы" » Вычисляемое поле в SQL [D7, MSSQL]
Есть новые Нет новых   [134431   +11][b:0][p:0.001]