I have a table in SQL Server as shown below. I'm computing the percentage change from value
and prevvalue
column
CREATE TABLE temp
(
[date] varchar(7),
[name] varchar(1),
[value] int,
[prevvalue] int
)
INSERT INTO temp ([date], [name], [value], [prevvalue])
VALUES
('2018-10', 'A', 10, 23),
('2018-09', 'B', 45, 23),
('2018-10', 'C', 55, 11),
('2018-10', 'D', 0, 23),
('2018-09', 'D', 22, 0)
This is my query. I use CASE WHEN
to handle the divide by zero issue.
SELECT
[date],
[name],
[value],
[prevvalue],
CASE
WHEN [prevvalue] = 0
THEN ([value] - [prevvalue]) / ([prevvalue] + 1)
ELSE ([value] - [prevvalue]) / [prevvalue]
END AS pctChangFromLast
FROM
temp
However, what I got as results is:
date name value prevvalue pctChangFromLast
-------------------------------------------------------
2018-10 A 10 23 0.00000000000000
2018-09 B 45 23 0.00000000000000
2018-10 C 55 11 4.00000000000000
2018-10 D 0 23 -1.00000000000000
2018-09 D 22 0 2200.00000000000000
The pctChangFromLast
of rows 1, 2, 4 is not right. What did I do wrong?