2016-04-14 6 views
0

1つのフィールドを繰り返し参照する長いクエリがあります。T-SQLでは、クエリ全体の検索と置換を避けるためにエイリアスを使用できます。

これを繰り返し実行したいのですが、異なるフィールドに対して実行したいと思います。

ここで擬似コードで簡単な例です:

*Use #MyField = field1* 
select #MyField from mytable1 where #Myfield is not null order by #Myfield desc 

私はその後、...=field2

... = field1から最初の行を変更すると再実行

と思い、私は私ができる知っていますただ検索する&置き換えますが、私が記述した方法でエイリアスを行うことはできますか?

おかげで、 ロブ

+1

いいえ、あなたは動的SQLを使用しない限り – Quassnoi

答えて

1

は、あなたはそのために、動的SQLを使用することができます。

DECLARE @query NVARCHAR(MAX) = 'SELECT ' + @myfield + ' FROM mytable WHERE ' + @myfield + ' IS NOT NULL ORDER BY ' + @myfield 

EXEC sp_executesql @query 

そうでない場合は、あなたのクエリはSQLインジェクションになりやすいだろう、あなたは唯一の信頼できる値に@myfieldを設定していることを確認します。

+0

すばやい返信をありがとう。実際のクエリはかなり長く、動的SQLを使用するともちろん動作しますが、クエリを微調整するのが難しくなります。 – user70576

+0

@ user70576:tough luck! – Quassnoi

関連する問題