0

合理的に単純なレポートを作成しようとしていますが、これは初めてで苦労しています。

プロパティとインシデントの 2 つのテーブルがあります。

プロパティ テーブルには、ID、プロパティの名前 (Name)、部屋数 (NoOfRooms) があります。

Incidents テーブルには、ID、関連するプロパティ (PropertyID)、DateOpened、DateClosed、および Status があります。

レポートでは、プロパティごとのインシデントの数と、ベッド スペースごとのクローズされたインシデントの数を表示することができました。

ただし、要約では、その月に発生したすべてのインシデントを合計する必要があります。しかし、その数をベッドの総数で割ります。

問題が発生するのは、すべてのベッド数を複数回合計することです。

したがって、データが次のようになっている場合:

Property Name   IncidentID      No of Beds
Property1       1               100
Property1       2               100
Property2       3               200
Property2       4               200
Property2       5               200

私はそれを示しています:

Propery Name    No Of Incidents      Incidents / Bed
Property1       2                    0.02
Property2       3                    01015

しかし、次のような要約を表示することはできません。

No of Incidents          Incidents / Bed
5                        5/300 = 0.016666667

インシデントの数は問題ありません。800 ではなく 300 のベッドしかないことを認識する最後のインシデント/ベッドです。

4

1 に答える 1

0

レポートレベルでこれを行うのに苦労するかもしれません。

基になるデータセットを拡張することでこれを解決します。

Property Name   IncidentID      No of Beds  Total Beds
Property1       1               100         300
Property1       2               100         300
Property2       3               200         300
Property2       4               200         300
Property2       5               200         300

これをデータベースから抽出するだけであれば、SQL はそれほど難しくなく、その後のレポート レベルのコードもかなり簡単です。

最終的に、SSSRS は、グループ レベルで集計し (Distinct No Of Beds値を取得)、別の集計をより高いレベル (Distinct No Of Beds値の合計) に適用する、この種の集計に苦労します。

SSRS 2008 R2 は集計の集計オプションを提供するため、2008 R2 を使用している場合は、次の式を使用してこれを行うことができます。

=CountRows() / Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))

PropertyNameはグループの名前です

しかし、2008 年の場合は、 Total Bedsをデータセット レベルに追加するだけで十分です。

また、ユーザー @Tom Jenkin は良い点を指摘しています。プロパティ レベルの詳細のみに関心がある場合は、データセットが既に集計されているように変更できます。たとえば、SQL ステートメントによって生成された場合GROUP BYは、上記のデータに対して 2 行のみを返すように使用します。これも適当でしょう。

コメント後に編集:

サンプル データセットに基づいてレポートを作成しました。

ここに画像の説明を入力

ここに画像の説明を入力

作成されたPropertyNameという行グループがあることがわかります。

合計ベッド数の式は です=Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))

最終パーセントの式は次のとおりです。

=CountRows() / Sum(Max(Fields!NoOfBeds.Value, "PropertyName"))

上記のように。

これにより、必要な結果が得られます。

ここに画像の説明を入力

于 2013-04-17T16:04:08.897 に答える