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

时间:2015-02-08 19:36:10

标签: sql-server

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

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转换为数字'时出错 是什么让我切换到顶部的声明声明。

是否可以执行我的第二个例子?

1 个答案:

答案 0 :(得分:0)

尝试使用类似的东西

cast(count(case when zip in ('123', '456', '789') then zip else null end)*1/whateveryourdividingby as decimal(10,4))