2015-04-22 3 views
1

Итак, у меня есть 2 столбца, я хочу сделать разделение, тогда я хочу сделать stdev в результирующем столбце. Я пытался выполнить следующий sql, но он не работает. Я не мог понять, как для сохранения внутреннего выбора в качестве переменной, а затем просто сделайте stdev на этом var. Я лаяю неправильное дерево? есть идеи?SQL 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 
+0

STDEV предназначен для использования в * столбце *, а не в целом запросе. –

+2

То, как вы обрабатываете 's.Date', ужасно ... –

+0

Я знаю, к сожалению, дата была установлена ​​как строка, а не дата ... Я не имел к этому никакого отношения. – user2136748

ответ

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) 

а не (неточное!) сравнение строк в поле даты.