использование CTE в подзапросе - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу иметь CTE в подзапросе.код выглядит следующим образом:

 select object_id, 
 change_time,
 old_value,
 new_value   ,
 DENSE_RANK() over ( partition by object_id order by change_time) "seq_no"
from (
;with cte
as (
select * from #tmpfup
union 
select distinct fup.object_id, datee.change_time, datee.old_value, 
datee.new_value
from #tmpfup fup, #tmpdate datee
)
select * from cte 
)

Я не знаю, возможен ли этот запрос или нет, но я пробовал его в SQL Server и получил ошибки, может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 19 декабря 2018

В 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 не является одним из них.

...