将转换(Bigint)允许对字符串进行计算



我总是很难尝试这样做。我发现这是一个解决方案,但我很好奇他们是否是更好的方法。

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))

最新更新