Вы можете проще написать этот запрос без CTE:
select row_number() over (order by a.a) as rownumber,
g.dept_dscr, i.dept_dscr
from abc a join
def g
on g.dept_no = a.b join
ghi i
on i.dept_no = a.c
where a.b = 640 and a.c = 640 -- things that look like numbers usually are
order by rownumber
offset 0 fetch first 12 rows only;
По иронии судьбы, если вы напишите это так, у вас не будет проблем.SQL Server позволяет наборам результатов дублировать имена столбцов, но не представления, подзапросы или CTE.
Тем не менее, лучше определить, откуда поступают столбцы:
select row_number() over (order by a.a) as rownumber,
g.dept_dscr as def_dept_dscr,
i.dept_dscr as ghi_dep_dscr
. . .