我总是在尝试这样做时遇到麻烦。我发现这是一个解决方案,但我很好奇他们是否是一个更好的方法。
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转换为数字'时出错 是什么让我切换到顶部的声明声明。
是否可以执行我的第二个例子?
答案 0 :(得分:0)
尝试使用类似的东西
cast(count(case when zip in ('123', '456', '789') then zip else null end)*1/whateveryourdividingby as decimal(10,4))