2016-09-17 25 views
0

一時的にクエリに名前を付けることができるT-SQLの仕組みはありますか?クエリの名前を一時的に割り当てる

具体的には、ストアドプロシージャを使用せずにこれを行うことができます。これは最終的には一時的なものであり、バッチの終了後には存在しないようにしたいと思います。

/* this is woefully invalid syntax */ 
DECLARE @reps = SELECT DISTINCT NAME FROM Representatives 

SELECT * FROM OtherTable 
WHERE RepName not in @reps 
+0

ビューは、その1つの方法です。 CTEを作成することもできます。 –

答えて

1

何かのように、私はあなたの質問を理解していれば、私はあなたには、いくつかの動的SQL

Declare @Reps varchar(max) = 'Select Distinct [Name] FROM Representatives' 

Declare @SQL varchar(max) = 'Select * From OtherTable Where RepName not in ('[email protected]+')' 
Exec(@SQL) 

を探している可能性があり別のオプションは、変数

Declare @Reps table (Name varchar(50)) 
Insert Into @Reps Select Distinct Name From Representatives 

Select * 
From OtherTable 
Where RepName not in (Select * From @Reps) 
表を作成することだと思います
+0

テーブル変数は、私が必要とするものとまったく同じです。 – jdphenix

+0

目的や使用している行の数に応じて、テンポラリテーブルが良いかもしれません。テーブル変数はオプティマイザがデフォルトで1行を持つと仮定しているため、より小さなデータセットでよりうまく動作します。テンポラリテーブルには、統計情報とより多くのインデックスがあります。構文は似ています:CREATE TABLE#MyTable(MyName varchar(50))とSELECT * FROM #MyTable。 –

+0

@ PetSchott 100%合意。私は最初に、温度表を使用している人はいないと言っています。 –

関連する問題