从一个存储过程调用,该过程将结果集返回到另一个存储过程以组合该结果集

时间:2012-07-06 10:51:21

标签: sql-server

我有一个存储过程,它提供一个输入参数。它比较了同一个表中两个colmns的值,并显示它是“可用”还是“不可用”。它返回该表的所有行(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运算符显示'available'或'not available'。假设1是“可用”而2是“可用”,则将其显示为“可用”。只有该对的两个值都可用,然后将其显示为“不可用”。如何使用上述存储过程的结果集编写另一个存储过程。现在这个存储过程的结果集是30行,但我希望通过削减1和2,3和4得到15个结果集,依此类推。我想我必须将一个存储过程调用到另一个过程但是如何在第二个存储过程中比较这些结果。 谢谢。

1 个答案:

答案 0 :(得分: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