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

ストアド プロシージャから一度に返される結果セットは 1 つだけです。

a,b,c問題は SSRS データセットにあります。ストア プロシージャの後半部分 ( ) を呼び出す場合でも、毎回最初の結果セットの列、つまり column のみが表示されます@sub_sheetpart= 'd'

4

2 に答える 2

3

SSRS は、DataSet 内のフィールドのリストを生成するときに、1 つの結果セットのみを考慮します。

この問題を回避して、何を実行しても次のように同じフィールドが取得されるようにすることができます。

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 を再作成します。これで、期待される 6 つのフィールドが作成されます。

if別のオプションは、 /の順序を反転してelse、2 番目のクエリが最初のifセクションにあるようにすることです。

DataSet デザイナーでフィールドを DataSet に手動で追加することもできます。

于 2013-06-06T12:44:56.183 に答える
1

もう 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 に答える