2

入力パラメータを 1 つ指定するストアド プロシージャがあります。同じテーブル内の 2 つの列の値を比較し、「使用可能」か「使用不可」かを示します。そのテーブルのすべての行 (30) を結果セットとして返します。私がそれを実行すると、次のようになります

1   available
2   available
3   not available
4   not available
5   not available
6   available
7   not available
8   not available
9   available
10  available
11  available
12  not available

しかし、私は 1 と 2、次に 3 と 4 をペアにしたいと考えています。次に、OR 演算子を使用して「使用可能」または「使用不可」を表示します。1 が 'available' で 2 が 'available' の場合、'available' のように表示します。そのペアの両方の値のみが利用可能であり、「利用不可」として表示されます。上記のストアド プロシージャの結果セットを使用して別のストアド プロシージャを作成する方法を教えてください。現在、このストアド プロシージャの結果セットは 30 行ですが、1 と 2、3 と 4 などを対にして 15 の結果セットを取得したいと考えています。あるストアド プロシージャを別のプロシージャに呼び出す必要があると思いますが、それらの結果を 2 番目のストアド プロシージャでどのように比較しますか。ありがとうございました。

4

1 に答える 1

3
-- Declare a table variable that captures
-- the output from your SP
declare @T table
(
  ID int,
  A varchar(15)
)

-- Add rows from SP to @T
insert into @T
exec GetValues

-- Query the table variable
select T1.ID as ID1,
       T2.ID as ID2,
       case when 'available' in (T1.A, T2.A)
            then 'available' 
            else 'not available'
       end as A 
from @T as T1
  inner join @T as T2
    on T1.ID + 1 = T2.ID
where T1.ID % 2 = 1

テストデータの結果:

ID1         ID2         A
----------- ----------- -------------
1           2           available
3           4           not available
5           6           available
7           8           not available
9           10          available
11          12          available
于 2012-07-06T12:39:04.693 に答える