0

では、私が抱えている問題について説明し、誰かが私を助けてくれるかどうか見てみましょう。SSRS 2012 (VS 2010) でマトリックス レポートを作成しています。列グループを折りたたむことを選択し、列のデフォルトの「可視性」を「非表示」にして、テキスト ボックスで切り替えることができます。これで、状態を含む行と、値フィールドを含むデータ フィールドができました。現在、SSRS のデフォルトは、「列グループ」が折りたたまれているときにデータ フィールドを合計することです。

パート 1 の問題:

それは素晴らしいことですが、空白を表示する代わりに「合計」と言ってほしいです。フィールドに式を適用すると、次のようになります

=IIF(Fields!Code.Value = "", "Totals", Fields!Code.Value)

次に、合計された親グループ ヘッダーではなく、展開する列にのみ適用されます。これを回避する方法はありますか?

パート 2 の問題:

データセットの一部にコレクションで指定した列がない場合、SSRS のデフォルトでは、空白のセルと空白のヘッダーが表示されます。これは、[列のグループ化] プロパティをクリックすることで簡単に解決できます。[可視性] をクリックし、[レポートが最初に実行されるとき:] を次のような式に変更します。

=IIF(IsNothing(Fields!Code.Value), false, true)

空白のヘッダーとセルを削除しましたが、折りたたまれたときのメインのグループ化がなくなりました。

私が欲しいのは、私のデータでこれだけです:

折りたたまれた

場所|合計

AL|2

AZ|1

または|

WA|7

拡大した

場所|A|B

アル| |2

AZ|1 |

または| | |

ワ|5 |2

グループ化のデフォルトは、これまでのところ次のようになっています。

場所|(空白)

AL|2

AZ|1

または|

WA|7

拡大した

場所|(空欄)|A|B

アル| | | |2

AZ| |1|

または| | | | |

ワ| |5|2

この例では、選択した任意のデータ ソースを使用して SSRS をロードし、この例のテーブル変数を設定するだけの簡単なテスト データ サンプルを作成できます。

declare @Temp table ( Place char(2), Code char(1), Value int)

insert into @Temp values ('AZ', 'A', 1), ('AL', 'B', 2), ('WA', 'A', 5),('WA','B',2),('OR', null, null)

select *
from @Temp
4

1 に答える 1

0

さて、基本的に私はインターネットを精査し、SSRSがそこにあるとは言えないものを望んでいることを発見しました。EG: null 値を持つヘッダーは、SSRS が値を持ちたくない null を想定しているため、合計を実行するときに不明な値を表示したいという問題があります。バックエンドでだますことはできますが、多少の作業が必要です。

基本的に最も簡単に言えば、データ コレクションを取得し、null をゼロとして識別して認識できるようにする必要があります。そのため、ヌルが CTE でゼロとして表示されるように考慮してグリッド レイアウトを作成し、その CTE を取得してピボットを解除し、本質的に元の状態に戻します。ただし、重要な違いは、null の値がゼロとして表されるようになったことです。「でも、グリッドにゼロが表示されるのに、なぜそれが必要なのですか?」と言うかもしれません。SSRS でいくつかの書式設定の原則を実行して、それをだますこともできます。

上記の例を見ていき、プロセス全体がどのように機能するかを示すためにいくつか変更を加えてみましょう。色の背景表現の書式設定も追加します。

_1. コードを取り上げて、データセットの前後を示しましょう。

SQL コード

declare @Temp table ( Place char(2), Code char(1), Value int)

insert into @Temp values ('AZ', 'A', 1), ('AL', 'B', 2), ('WA', 'A', 5),('WA','B',2),('OR', null, null)

select *
from @Temp
order by Place
;

with a as 
    (
    Select 
        Place
    ,   sum(Case when Code = 'A' then Value else 0 end) as A
    ,   sum(Case when Code = 'B' then Value else 0 end) as B
    from @Temp
    group by Place
    )
select
    Place
,   Code
,   Value
from a
unpivot(Value for Code in (A, B)) as unpvt1
order by Place

_2. 最初のセットを無視し、SSRS レポートで 2 番目のセット (select * from @Temp order by Place を削除) をデータ セットとして使用します。

_3. Place を行、Code を列、Value をデータとして、マトリックス レポートを設定します。

_4. 「列グループ」を右クリックして、列に何もない場合に列を非表示にする式を設定します (例を示すコードである必要があります) > グループのプロパティをクリックします > 可視性をクリックします > 最初のセクションの下の [機能] タブをクリックします: (また、トグルすることもできます)これは、別のテキストセルで行ったのと同じように必要に応じて)

=IIF(IsNothing(Fields!Code.Value), false, true)

_5. [コード] 列をクリックし、その上の灰色のバーをクリックします。右側の列の挿入をクリックし、ヘッダーに「Totals」を入力し、セルに「[Sum(Value)]」を入力して合計を表示します。私の人生では、合計ヘッダーが適切に集計されている場合、合計ヘッダーが異なることを示す式を取得できませんでした。このメソッドは、合計が折りたたまれているかどうかを示すだけです。

_6. ここでプレビューするとゼロが表示される場合がありますが、すべての場合にそれが必要なわけではないため、テキスト値を少し操作してみましょう。[コード] の下の [値] を右クリックし、[テキスト ボックスのプロパティ] を選択します。左ペインの「番号」をクリックします。「Show zero as:」のチェックボックスをオンにして、「 」(何も表示しない) を選択します。これでゼロはなくなりました。

_7。これで、最初に欲しかったものはほとんどありますが、ヘッダーが示す内容に基づいてセルを動的に色分けしたいと考えています。コード ヘッダーの下のセル値のプロパティを取得し、[背景色] を選択し、ドロップダウンをクリックして式を選択します。次の式を入れます。

=IIF(Fields!Code.Value = "A", "小麦", IIF(FIelds!Code.Value = "B", "LightBlue", "White"))

私は今、何らかの理由でインターネット上のほとんどの人が音をほとんど不可能にするものを手に入れることができます. 配置がゼロとして存在する値に関連付けられるようになったため、列を一貫した色に設定できますが、エンドユーザーには表示されなくなりました。

しかし、あなたは次のように言うかもしれません。私にもそれができます。「コード」の下の「値」セルのプロパティを表示し、「フォーマット」プロパティを確認します。デフォルトは次のようになります。

0.00;(0.00);''

お金が必要な場合は、代わりに次のようにします。

$###,##0;0.00,''

これが誰かの役に立てば幸いです。また、「小さなデータ セットには最適ですが、100 万行以上の行があるので、そのようなことをしたい」と言っている場合も覚えておいてください。cteを一時テーブルまたは永続テーブルに置き換え、データをメモリまたは永続テーブルにダンプして最初にマッサージします。

于 2012-12-14T17:34:07.960 に答える