我总是很难尝试这样做。我发现这是一个解决方案,但我很好奇他们是否是更好的方法。
declare @CountByZip as int
select @CountByZip = convert(decimal(18,4),count(HouseNumbers))
from zipcodeDB
Where zip is not null
使用它作为语句执行没有问题!
Convert(decimal(18,4),Count(case when zip IN ('123', '456', '789') then zip else null end))/@CountByZip
然而,我很好奇是否有一种方法可以在case语句中转换为int,并允许它删除示例顶部的变量和select语句的创建。
Convert(Bigint,Convert(decimal(18,4),Count(case when zip IN ('123', '456', '789') then zip else null end))/Count(Zip)
但是,这会返回可怕的SQL错误'将数据类型varchar转换为数字时出错'这就是为什么我在顶部切换到声明声明的原因。
可以执行我的第二个示例吗?
尝试使用类似的东西
cast(count(case when zip in ('123', '456', '789') then zip else null end)*1/whateveryourdividingby as decimal(10,4))