Warm tip: This article is reproduced from serverfault.com, please click

sql server 2008-插入表变量CTE

(sql server 2008 - Insert Into Table Variable CTE)

发布于 2014-04-12 04:53:53

如何将CTE的结果插入表变量

像这样吗?

DECLARE
       @myData TABLE( 
                        Title nvarchar(350) NOT NULL , 
                        Id int NOT NULL ,
                    );
INSERT INTO @myData

with CTE as 
    (SELECT       
      a.Title 
     ,a.Id
  FROM
       TableA
     )
    ,CTE2 as 
    (SELECT  
      b.Title
     ,b.Id   
  FROM
       TableB
    )

    Select * From CTE

    union all

    Select * From CTE2

    Select  ROW_NUMBER() OVER(ORDER BY GetDate() DESC) AS RowId
       , x.* 
       From @myData x
       order by x.Id desc
Questioner
user1307149
Viewed
11
rs. 2014-04-12 12:57:49

试试这个

with CTE as 
    (SELECT       
      a.Title 
     ,a.Id
  FROM
       TableA
     )
    ,CTE2 as 
    (SELECT  
      b.Title
     ,b.Id   
  FROM
       TableB
    )
    INSERT INTO @myData  --- insert statement goes here after CTE

    Select * From CTE    
    union all    
    Select * From CTE2

    Select  ROW_NUMBER() OVER(ORDER BY GetDate() DESC) AS RowId, x.* 
    From @myData x
    order by x.Id desc