2016-06-20 2 views
0

誰かが助けてくれることを願っています。私は、例えば以下の行私はレベルの型が地域の値を表示したいSSRSでSSRS - iif式は最初の行で一致するだけで結果が読み込まれます

Region Level Days 

OT  TEAM  121.9675 
OT  TEAM  79.2529 
ME  REGION 68.0013 
OT  REGION 106.1437 
UK  REGION 92.3336 
US  REGION 73.0599 
AP  REGION 75.7024 

を返しているデータセットを持っている(私は地域のための2つのチームのレベル値を含めたくありませんOT)。表中の式は、地域の

=iif(Fields!LEVEL.Value = "REGION", sum(Fields!Days.Value),"fail") 

Iグループですが、OTのために、私は「失敗」が、私は、正しい金額を取得する他のすべてに取得しています。私は

iif(Fields!LEVEL.Value = "TEAM", sum(Fields!Days.Value),"fail") 

に自分の表現を変更した場合、私はOT(307.36)の値を取得し、私が期待する他の地域のために「失敗」が、これは、両方の合計であるように私は307.36を見て期待していませんTEAMとREGIONのラインがありますが、私はチームを求めています。それはTEAMにマッチしたようなもので、OTのトータル、またはREGIONのマッチ前のトータルを取得しますが、OTの場合、最初の行はTEAMなので失敗します。これは意味をなさないことを望みます - 誰でも助けることができます、私はよく似たレポートを持っています、私が間違っていることを見ることができません。

多くのおかげで、

いくつかの追加の例

私はAdventureWorksのに入ったと見てみるためにテストテーブルを作成し、まだ次のように私も

表率直どうあるべきかとの問題を抱えています:

Area (nvarchar(50), 
Lockup_level (nvarchar(50), 
Days (decimal 18,0) 

データを次のように

OT REGION 25 
OT TEAM  56 
US REGION 67 
US TEAM  1 
UK TEAM  23 
UK REGION 10 

私は、テーブルとシンプルSSRSを作成したエリアごとにグループ化され、その後、我々は(バリエーションの数で)議論してきたように式の中で置かれている

=iif(Fields!Lockup_level.Value = "REGION", sum(Fields!Days.Value),0) 

これは私に次を返します。テーブル:

OT 81 
UK 0 
US 68 

したがって、OTと米国に対するREGIONを探して、合計(TEAM行を含む)を合計します。私は合計を取り出すことができると私はOTと米国のための右の数字を取得しますが、英国はゼロである - それは最初のチームを読み込むので、私は思う...

答えて

1

試してみてください。

=SUM(IIF(Fields!LEVEL.Value = "REGION",Fields!Days.Value,0)) 

を更新:

整数に値を変換してみてください:

=SUM(IIF(Fields!LEVEL.Value = "REGION", 
CInt(Fields!Days.Value) 
,0)) 

O r値を合計で使用できるかどうかを判断するには、条件を使用します。

=SUM(IIF(Fields!LEVEL.Value = "REGION", 
IIF(IsNumeric(Fields!Days.Value),Fields!Days.Value,0) 
,0)) 

UPDATE 2:

これらのグループ設定でのTablixを追加します。

enter image description here

は、最後の列を非表示にし、合計を計算するために次の式を使用します。

=Sum(IIF(Fields!Level.Value="REGION",Fields!Days.Value,0),"Region") 

Sumが合計を計算するグループ化範囲を機能するように指示する "Region"引数に注意してください。

あなたはこのようなものそれ自体は以下となります。

enter image description here

このことができますなら、私に教えてください。

+0

多くのありがとう - 私はこれを試していると私はそれが私に '0'しかし#errorを与えていないように進んだと感じる。私は問題がある場合にはDaysの値が常に整数または数値であることを確認しています。 –

+0

@ L.Harris、私の更新を確認してください。 –

+0

多くのおかげで再び - 私はそれらを試みたが、まだ運がない。そのレベル= "REGION"に関連するビットは、 "REGION"である行はありません。私は私の結果セットがその行をOKにするように制限していますが、他のレベル(TEAM、COUNTRYなど)をそのフィールドにも持っていれば、そのフィールドは何も見つかりません!LEVEL.Value = "REGION "、...私はなぜうまくいかない。私は見ていきます.. –

1

あなたが見ている問題は、計算の範囲と関係があります。たとえば、式がグループ化された行にない場合、Sum関数はデフォルトのスコープであるため、データセット全体で実行されます。

混乱を避けるための良い方法は、この式をデータセットレベルに置くことです。データセットのプロパティで、式に計算フィールドを追加します。この方法では、テーブル内のセルのスコープがどのようなものであっても、行単位で計算されます。

これで、テーブルの新しい計算列を期待どおりに参照できます。

+0

ありがとうございます。 –

関連する問題