Я сбит с толку вашим запросом.Во-первых, я не понимаю, почему вы хотите использовать курсор вместо select
ввода значений.
Но ваши запросы не должны ничего возвращать.Обратите внимание: объявлено
select 0.01*v9.charge AS firstTENDAYS
from v9
where datepart(day, 9.trans_time_date) between 0 and 10 and
@Charge = v9.charge;
@Charge
, но не задано значение, поэтому оно равно NULL
.Это должно провалить любые сравнения.
Ваши три запроса не связаны между собой, поэтому курсор является только первым запросом.Это может быть связано с проблемой, которую вы видите.
Я подозреваю, что вам нужен более простой запрос, например:
select (case when day(v9.trans_time_date) <= 10 then 'firstTenDays'
when day(v9.trans_time_date) <= 20 then 'secondTenDays'
else 'thirdTenDays'
end) as which,
(case when day(v9.trans_time_date) <= 10 then 0.01 * v9.charge
when day(v9.trans_time_date) <= 20 then 0.02 * v9.charge
else 0.03 * v9.charge
end) as chart
from v9;