Недопустимая операция с плавающей запятой с CTE

Я получаю сообщение Недопустимая операция с плавающей запятой с этим кодом. Это говорит мне, что проблема в том месте, где начинается CTE. Если у меня нет функции SQRT, то все работает нормально, но как только я добавляю SQRT, я получаю сообщение об ошибке.

Что я пытаюсь сделать, так это избавиться от негатива, возведя число в квадрат.

declare @start_date date, @end_date date
set @start_date = '2012/01/01' 
set @end_date = '2012/12/31';
with tbl1
as
(

    select 
        strata, 
        entranceID,
        sum(count)/count(*) as AverageCount
    from 
        train
    where 
        surveydate between '2012/01/01' and '2012/12/31'
    group by 
        strata, 
        entranceID
)
select 
    a.jobnumber,
    a.strata,
    a.EntranceID,
    Count,
    b.AverageCount,
    count - AverageCount
    , CASE WHEN AverageCount = 0 then 0
        ELSE SQRT(count - AverageCount)
        END as A

person user2343837    schedule 03.12.2013    source источник


Ответы (1)


В выражении:

SQRT(count - AverageCount)

Значение count должно быть >= AverageCount.

Это может быть не так для ваших тестовых данных.

Рассмотрите возможность использования:

SQRT (ABS(count - AverageCount))

Вместо этого, если это имеет смысл в вашем случае.

person NoChance    schedule 03.12.2013
comment
Как вы сказали, я обнаружил функцию ABS. Спасибо - person user2343837; 04.12.2013