1. ホーム
  2. sql-server-2005

SQLクエリ、SELECTの結果をローカル変数に格納する

2023-11-04 08:14:31

質問

いくつかの結果を再利用したクエリを作成しました。結果を変数に入れて使用する方法を探しています。

こんな感じのものが欲しいな~というのを簡単に見る方法。

DECLARE @result1 ?????

SET @result1 = SELECT a,b,c FROM table1
SELECT a AS val FROM @result1
UNION
SELECT b AS val FROM @result1
UNION
SELECT c AS val FROM @result1

これではない:

 SELECT a AS val FROM (SELECT a,b,c FROM table1)
 UNION
 SELECT b AS val FROM (SELECT a,b,c FROM table1)
 UNION
 SELECT c AS val FROM (SELECT a,b,c FROM table1)

気になるのはこのクエリの結果ではなく、代わりに

  1. 結果を何度も選択しないようにすること - 私のサンプルでは、テーブルを 3 回再選択しました。

  2. のクエリは @result1 は通常とても複雑です。だから、変数を使えば、コードはすっきりする。

多分、私は多くをしたい - またはローカル変数の型があります。型テーブルを使って、中にデータをセットするとか。

何かいい方法はないでしょうか?

ありがとうございます。

どのように解決するのですか?

テーブル変数を作成することができます。

DECLARE @result1 TABLE (a INT, b INT, c INT)

INSERT INTO @result1
SELECT a, b, c
FROM table1

SELECT a AS val FROM @result1
UNION
SELECT b AS val FROM @result1
UNION
SELECT c AS val FROM @result1

これで問題ないでしょう。