求和和转换无效

时间:2018-07-05 15:20:46

标签: sql sql-server sql-server-2008

我正在SQL Server中做一个总和,并且我试图针对上一个财政年度的百分比差来执行本财政年度,其代码如下所示:

declare @LastYear table (
[year] nvarchar(40),
total int )

insert @LastYear ([year],[total])
select '2018', count(a.caseno) from activity a
where a.activedate between '2017-04-01' and GETDATE()-365

declare @ThisYear table (
[year] nvarchar(40),
total int)

insert @ThisYear([year],[total])
select '2018', count(a.caseno) from activity a
where a.activedate between '2018-04-01' and GETDATE()

select t.year,sum(convert(decimal(18,2),((t.total/l.total)-1),18))  from 
@ThisYear t
left join @LastYear l on t.year = l.year
group by t.year

我从中得到的答案是-1。总和的答案应该是-0.06。你能告诉我我要去哪里了吗?

2 个答案:

答案 0 :(得分:2)

问题是整数除法:

t.total / l.total

这将返回一个整数。

最简单的解决方案是:

t.total * 1.0 / l.total

答案 1 :(得分:1)

在表上,您将total声明为int。您应该声明为float。试试:

declare @LastYear table (
[year] nvarchar(40),
total float
)