2011-01-18 33 views
20

SSRSレポートには、複数ページの行が表示されています。各行には「TYPE」フィールドがあります。そのTYPEフィールドには、値の "M"または値の "P"があります。レポートの最後に、私は "P"タイプのすべての価格値を集計したいと思います。私はこれを試してみましたが、それは#エラーprioduced:これはこれは行うことができ、すべての行 SSRS条件付き加算

=iif(Fields!PART_TYPE.Value = "P" , Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value), 0) 

私は確信しているが加算された

=Sum(iif(Fields!TYPE.Value = "P",Fields!EXT_QTY.Value * Fields!PRICE.Value ,0)) 

を。何か案は?その答えが見つかりおかげ

+0

このシナリオでCDblが必要なのはなぜですか? SUMの実行時にOP類似の型を想定しており、 '0'が整数型であることを期待しているときに、OPのシナリオ「Sum(Fields!EXT_QTY.Value * Fields!PRICE.Value)」の –

+5

はdouble型および/ 。そのために失敗しました。したがって、IIFステートメントの真と偽の部分の両方を同じデータ型に変換すると、エラーが解決されます。 – N30

答えて

31

.... SUM比較型に起因する障害が発生した

=SUM(IIF(Fields!PART_TYPE.Value ="P",CDbl(Fields!EXT_QTY.Value * Fields!PRICE.Value), CDbl(0.0))) 
11

- あなたはされ、さまざまな種類の値を合計することができない表現(おそらくDoubleInteger、0と。 MikeTWebbの答えは、このエラーを回避するために明示的な型変換を行います。これは、この特定の例ではSumですが、TypeがPである値の平均(Sum/Count)が必要な場合は、正確な結果は得られません。これは、0が値であり、これらの値を実際に計算から除外したい場合は、平均化計算で使用します。

別のオプションはNothingの代わりに0を使用することです:

=Sum(IIF(Fields!TYPE.Value = "P", Fields!EXT_QTY.Value * Fields!PRICE.Value, Nothing)) 

これは、明示的な型キャストを必要とせずに型の比較エラーを解決し、あなたは値が存在するかどうかが重要である集計を使用しているときよりよい解決策でありますその結果、Averageのようになります。

+1

これは完璧でした。私は間違いなく、Nothingの使用はAverageのような計算のために「経験則」として行く方法だと思っています。 – Pete

+1

よろしく!これはまさに私が必要としたものでした。まだヌルのための良いキーワードをbeeing 'Nothing'の考えを得ることはありません。 – Akaino