Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como referenciar um CTE duas vezes?


Não pense que você pode. De MSDN

Ênfase em "instrução única SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW".

Esta pode ser uma situação em que você deseja usar uma Tabela temporária .
CREATE TABLE #Recs
{
  .....
}
INSERT INTO #Recs
select *, row_number() over (order by id) as rownum from ......

Se você não conhece a estrutura da tabela de antemão, você pode usar este formulário para criar uma tabela temporária:
select *, row_number() over (order by id) as rownum INTO #Recs from ......

Você poderá usar a tabela Temporária da maneira descrita acima.