0

複数の cte で select into を使用できますか? たとえば、次のコードでは、最初の cte cte_table の結果が dbo.table1 に挿入され、次に他の cte が定義されます。これは可能ですか?

WITH cte_table 
AS 
( 
SELECT * 
FROM dbo.table
)
INSERT INTO dbo.table1 
SELECT *
FROM [cte_table]
, cte_table2
AS
(
SELECT * 
FROM dbo.table2
)
4

4 に答える 4

3

いいえ、できません:許可されていないエラーが発生します。他の人が指摘しているように、繰り返し可能な(したがって静的な)参照を意図しているためINTO、理にかなっています。CTE

そして、SQLの実行時にcteが派生テーブルに解決される限り、大部分が構文糖衣である/あった場所を読んだことを思い出します。

于 2012-09-21T09:02:30.110 に答える
3

ケースがRe-usabilityレコード セットの場合は、一時テーブルまたはテーブル変数を使用します。

例えば

Select * Into #temp1 From dbo.table

INSERT INTO dbo.table1 
SELECT * FROM #temp1

SELECT * FROM #temp1 ..... and do some other re-usability operations.

チェーンされた Cte は以下のように機能します (ほんの一例)

;With Cte1 As ( Select * from table1)
,Cte2 As (Select * from table2)

select c1.*,c2.*
from cte1 c1, cte2 c2

いつ何をどのように使用するかを理解していただければ幸いです。

于 2012-09-21T09:44:09.577 に答える
0

いいえ、CTE で select into を使用することはできません。そして、それは実際には何の意味もありません。

于 2012-09-21T09:02:31.730 に答える