Actually, I would say that the table design was not well chosen: if years need to be numerically manipulated, they should be stored as SMALLINT instead of as CHAR(4).
Views could "mask" this as an implicit conversion (until the tables have been redesigned).
So essentially your query could become:
Code:
WITH tb950 (yeargive) AS
( SELECT CAST(yeargive AS smallint) FROM advtb950 ) ,
tbdat (fiscyear) AS
( SELECT CAST(fiscyear AS smallint) FROM advtbdat )
SELECT B.yeargive, C.fiscyear
FROM tb950 B INNER JOIN tbdat C ON B.yeargive >= C.fiscyear - 1
and the "WITH" (view) would disappear when the tables have been redesigned to used SMALLINT instead of CHAR(4) for the year columns.