Sum and Convert не работает - PullRequest
0 голосов
/ 05 июля 2018

Я делаю сумму в 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 голосов
/ 05 июля 2018

Проблема в целочисленном делении:

t.total / l.total

Возвращает целое число.

Самое простое решение:

t.total * 1.0 / l.total
0 голосов
/ 05 июля 2018

на вашем столе вы объявляете total как int. Вы должны объявить это float. Попробуйте:

declare @LastYear table (
[year] nvarchar(40),
total float
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...