1

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

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 数据集中 - 它每次只显示第一个结果集的列,即 column a,b,c,即使我要调用存储过程的后面部分 ( @sub_sheetpart= 'd')。

4

2 回答 2

3

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

您可以解决此问题,以确保无论运行什么,您都会获得相同的字段,如下所示:

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 中。

于 2013-06-06T12:44:56.183 回答
1

还有另一种解决方法,虽然它不合适,但您可以获得所需的结果。您可以创建一个临时表,然后在每个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
于 2014-11-05T06:40:06.953 回答