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 个结果集。我想我必须将一个存储过程调用到另一个过程,但是我将如何在第二个存储过程中比较这些结果。谢谢你。

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 回答