В SQL Server CTE идут перед первым SELECT
:
with cte as (
select * from #tmpfup
union
select distinct fup.object_id, datee.change_time, datee.old_value, datee.new_value
from #tmpfup fup cross join
#tmpdate datee
)
select object_id, change_time,old_value, new_value ,
DENSE_RANK() over ( partition by object_id order by change_time) as seq_no
from cte;
Обратите внимание, что вам также нужен псевдоним таблицы во внешнем предложении from
(но я удалил этот подзапрос).
Кроме того, некоторые базы данных do поддерживают CTE с подзапросами.SQL Server не является одним из них.