By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
DECLARE @MYTable Table(ID int,SALARY DECIMAL(18,2),Months INT,DOJMONTH VARCHAR(100));
INSERT INTO @MYTable VALUES(1,6000,3,'MARCH');
INSERT INTO @MYTable VALUES(2,4000,5,'JUNE');
INSERT INTO @MYTable VALUES(3,7000,4,'MARCH');
WITH CTE AS
(SELECT *,
CASE WHEN DOJMONTH='January' THEN 1
WHEN DOJMONTH='February' THEN 2
WHEN DOJMONTH='March' THEN 3
WHEN DOJMONTH='April' THEN 4
WHEN DOJMONTH='May' THEN 5
WHEN DOJMONTH='June' THEN 6
WHEN DOJMONTH='July' THEN 7
WHEN DOJMONTH='August' THEN 8
WHEN DOJMONTH='September' THEN 9
WHEN DOJMONTH='October' THEN 10
WHEN DOJMONTH='November' THEN 11
WHEN DOJMONTH='December' THEN 12 ELSE NULL END MonthNum
FROM @MYTable
)
SELECT ID,
CASE WHEN DOJMONTH='January' OR
(MonthNum=1 AND ((MonthNum+Months)-1)>=1)
THEN SALARY
ELSE NULL END AS January,
CASE WHEN DOJMONTH='February' OR
(MonthNum<2 AND ((MonthNum+Months)-1)>=2)
THEN SALARY
ELSE NULL END AS February,
CASE WHEN DOJMONTH='March' OR
(MonthNum<3 AND ((MonthNum+Months)-1)>=3)
THEN SALARY
ELSE NULL END AS March,
CASE WHEN DOJMONTH='April' OR
(MonthNum<4 AND ((MonthNum+Months)-1)>=4)
ID | January | February | March | April | May | June | July | August | September | October | November | December |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | null | null | 6000.00 | 6000.00 | 6000.00 | null | null | null | null | null | null | null |
2 | null | null | null | null | null | 4000.00 | 4000.00 | 4000.00 | 4000.00 | 4000.00 | null | null |
3 | null | null | 7000.00 | 7000.00 | 7000.00 | 7000.00 | null | null | null | null | null | null |