Когда я пытаюсь разделить первый вложенный оператор select на количество столбцов, запрос возвращает нуль. Когда я заменяю «/» на «,», я получаю два разных числа, поэтому возвращаемое значение не должно быть равным нулю. Может ли это иметь какое-то отношение к тому, что в наборе данных есть нули? Любая помощь была бы оцененаЗапрос, возвращающий нуль при делении в операторе select
declare @hospitalfk int;
set @hospitalfk='1335'
declare @startdate date;
set @startdate='03/01/2014'
declare @enddate date;
set @enddate='02/28/2015'
declare @reportname varchar(50);
set @reportname='%Medicaid Billable Report%'
declare @metasectionname varchar(100);
set @metasectionname='Medicaid Primary'
select
(
select count(iscoded)
from ope.ope.vwerali
where iscoded=1
and [email protected]
and reportdate between @startdate and @enddate
and reportname like @reportname
and metasectionname like @metasectionname
)
/count(iscoded)
from ope.ope.vwerali
where [email protected]
and reportdate between @startdate and @enddate
and reportname like @reportname
and metasectionname like @metasectionname
"Я получаю два разных номера" .. какие номера вы получаете? Counts возвращает целые числа. Не переходя к другому типу данных, и у вас есть знаменатель> ваш числитель, вы получите 0 в результате. Пример: 'select 1/2' – Dan
Как сказал Дэн, но немного конкретнее ... Оберните свой знаменатель в CAST (nullif (count (iscoded), 0) как float). SQL Server обрабатывает целочисленное деление по-разному, чем обычная математика. Nullif предотвратит деление на нулевые ошибки –
Вложенный оператор select возвращает 2484, а count (iscoded) возвращает 3569. Я попытался преобразовать столбцы в int, но запрос все равно возвращает ноль. – WSL346