计算列

时间:2015-04-22 15:50:20

标签: sql sql-server

所以我有2列我想要进行除法然后我想在结果列上做一个stdev我正在尝试以下sql但它不起作用我还没有弄清楚如何保存内部选择为一个变量,然后只对该var执行stdev。我吠叫错了树吗?有任何想法吗?

select 
stdev(
  select 
       convert(decimal(20,5),convert(decimal(20,5),(s.received))
        /convert(decimal(20,5),(s.sent)))*100 as DDR 
        from someTable s 
        where s.SomethingName = 'thisthingsName' 
        and s.Date like '2015-04-16%'
)
from someTable

1 个答案:

答案 0 :(得分:1)

select 
    stdev(
        convert(decimal(20,5),convert(decimal(20,5),(s.received))
        / convert(decimal(20,5),(s.sent)))*100  
    ) as deviation
from 
    someTable s
where
    s.SomethingName = 'thisthingsName' 
    and s.Date like '2015-04-16%'

请注意,如果您的SQL Server版本是2008或更高版本,您也可以执行

and cast(s.Date as date) = '2015-04-16'

并且在SQL Server 2012中可以执行

and cast(s.Date as date) = DATEFROMPARTS(2015,04,16)

而不是日期字段上的(非完全!)字符串比较。