每次在ssrs中显示第一个结果集列的存储过程

时间:2013-06-06 12:20:18

标签: reporting-services ssrs-2008

我有一个这样的存储过程:

if(@sub_sheetpart= 'c') 
    begin   
      select a,b,c from table1        
    end
if(@sub_sheetpart= 'd')    
    begin       
       select a,b,c,d,e,f from table2   
    end

一次只能从存储过程返回一个结果集。

问题出在SSRS数据集中 - 它每次只显示第一个结果集的列,即列a,b,c,即使我打算调用存储过程的后半部分(@sub_sheetpart= 'd' )。

2 个答案:

答案 0 :(得分:2)

SSRS只会在生成DataSet中的字段列表时考虑一组结果。

你可以解决这个问题,以确保运行的是你得到的相同字段:

if(@sub_sheetpart= 'c')
begin

  select a
    , b
    , c
    , d = null
    , e = null
    , f = null
  from table1

end
if(@sub_sheetpart= 'd')
begin

  select a
    , b
    , c
    , d
    , e
    , f
  from table2

end

根据上述内容重新创建DataSet - 它现在将具有六个预期字段。

另一种选择是翻转if / else的顺序,以便第二个查询位于第一个if部分。

您甚至可以手动将字段添加到DataSet设计器的DataSet中。

答案 1 :(得分:0)

还有一项工作,虽然它不合适,但你可以得到理想的结果。 您可以创建一个临时表,然后在每个if语句后插入null。

例如:

create table #temp
(
id int
)

if(@sub_sheetpart= 'c')
begin

insert #temp(
id
)
select null
  select a
    , b
    , c
   from table1

end
if(@sub_sheetpart= 'd')
begin
insert #temp(
id
)
select null

  select  
      e
    , f
  from table2

end