2017-04-26 20 views
0

私はSQLサーバ上でwith節のいくつかの時間エイリアスを使いたいです。エイリアスを持つSQLのいくつかの使用

例:

WITH name1 AS (
    SELECT ... 
) 

SELECT * from name1 
SELECT * from name1 ORDER BY name 

が、それは可能ですか? 私は、「無効なオブジェクト名」エラー構文を以下のように

+0

代わりにビューを作成してください。異なるクエリで使用できます。 – jarlh

+0

CTEは 以降のステートメントです。単一のSELECT/INSERT/UPDATE/DELETE、または複合語(UNION、INTERSECTなど) –

+0

にすることができます。最初のSELECTはCTE名1からのみ実行できます。 2番目のSELECTはエラーを出しています。 –

答えて

1

は何を使用しようとしていることはその部分だけが正常に動作します

WITH name1 AS (
    SELECT ... 
) 

SELECT * from name1 

直後のDMLで使用可能ですCTE、です。次のselectステートメントはCTEへのアクセス権を持ちません。代わりにtable variableを使用してみてください

0

共通テーブル式になっています:

WITH name1 AS 
(
    SELECT ... 
) 

SELECT * from name1 

あなたがよりCTE テーブルの詳細を使用したい.IFあなたはCTEテーブル1つだけのSELECTステートメントを使用することができます一度、あなたはそのCTEテーブルに移動してテーブルを一時的にし、そのテーブルをすべての場所で使用します。

関連する問題