Я рассчитываю коэффициент, основанный на Годе и Месяце за каждый год. Оба оператора CASE отображают правильные значения, которые необходимо разделить. Но по какой-то причине я получил 0 или -100Оператор CASE, деленный на другой оператор CASE, дает значение 0
;WITH cte_yoyComparison
AS
(
SELECT Year(EffectiveDate) AS EffectiveYear,
Month(EffectiveDate) AS EffectiveMonth,
SUM(Premium) as Premium
FROM Test_Plaza_ProductionReport
WHERE YEAR(EffectiveDate) <> 2017
GROUP BY Year(EffectiveDate),
Month(EffectiveDate)
)
SELECT *, b.YearNum,b.MonthNum,
((case when b.YearNum=2016 and b.MonthNum=1 THEN Premium end)) /(case when b.YearNum = 2015 and b.MonthNum = 1 THEN Premium end) as Ratio,
((((case when b.YearNum=2015 and b.MonthNum=1 THEN Premium else 0 end)) /NULLIF((case when b.YearNum = 2016 and b.MonthNum = 1 THEN Premium else 0 end),0))-1)*100 as Ratio1,
case when b.YearNum=2015 and b.MonthNum=1 THEN Premium else 0 end as CorrectValue,
case when b.YearNum = 2016 and b.MonthNum = 1 THEN Premium else 0 end as CorrectValue1
FROM tblCalendar b
LEFT JOIN cte_yoyComparison a ON b.MonthNum=a.EffectiveMonth AND b.YearNum=a.EffectiveYear
WHERE b.YearNum<>2017
Order BY EffectiveYear desc,EffectiveMonth
Каков тип данных столбца 'Премиум'? –
Int дивиденд на большее значение int даст нуль. Ввести либо числитель, либо знаменатель на что-то с десятичной цифрой –
Тип данных - это деньги – Oleg