I would like to set an alias for the case statement in the following query. The query works fine but the last column header shows as the case statement in full. You can have a look at what I mean at dbfiddle. I am trying to get the difference between the current salary at a row and the next salary found for that employee in a list of employees.
x
select r.totalSalary, r.nextTotalSalary ,
(case when isnull(r.nextTotalSalary)= 1 then r.totalSalary
else nextTotalSalary
end ) - r.totalSalary
from (
SELECT
pi.empid,
pi.totalSalary,
LEAD(pi.totalSalary,1) OVER (
PARTITION BY pi.empid
ORDER BY pi.effectivefrom ) nextTotalSalary
FROM
Report pi where pi.empid = 200 ) r ;
When i try to place an alias as end as nextTotalSalary
the query won’t execute. Error is “Select is not valid at this position for this server version ..”
How can i set an alias for the third column?
Advertisement
Answer
You can use AS
. For example:
select r.totalSalary, r.nextTotalSalary , ( case when isnull(r.nextTotalSalary)= 1 then r.totalSalary
else nextTotalSalary
end ) - r.totalSalary as nextTotalSalary
from (
SELECT
pi.empid,
pi.totalSalary,
LEAD(pi.totalSalary,1) OVER (
PARTITION BY pi.empid
ORDER BY pi.effectivefrom ) nextTotalSalary
FROM
Report pi where pi.empid = 200 ) r ;