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

在表达式中:

SQRT(count - AverageCount)

count的值必须是>=AverageCount。

对于您的测试数据,这可能不是真的。

考虑使用:

SQRT (ABS(count - AverageCount))

相反,如果这对你来说有意义的话。

最新更新