2009-05-18 67 views
6

我有一個包含布爾值列的數據集的報告。在表格頁腳我想要顯示x/y其中x是和y有多少行是總共有多少行。SSRS:如何計算真正的行

目前我有這樣的:

=Count(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

但是第一次變成一樣的最後一部分。然後我試了這個:

=Sum(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

但是,這會產生一個錯誤,我想我可以理解。我認爲如果我將布爾轉換爲數字,其中true爲1,false爲0,那麼它可以很好地工作。但我該怎麼做?或者這是一個更聰明的方法嗎?

更新:現在也嘗試

=Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

,並得到了否定的結果...... O.o

還發現了一個方式工作,這是我張貼的答案。但作爲一個答案了櫃面有人有更好的方式來做到這一點,我也不會接受=)

回答

9

我可以告訴你爲什麼事情發生了錯誤...

  • 計數(字段!Transfered.Value)僅僅是行數。 ())
  • Sum(Fields!Transfered.Value)試圖聚合「true」或「false」=錯誤
  • Sum(CInt(Fields!Transfered.Value))將和-1和0,因爲VB .NET真正= -1
  • 總和(IIF(領域!Transfered.Value,1,0))修復符號問題=你的解決方案

爲了避免額外的IIF,您可以用否定的總和所有的-1s

= -Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

最後,任何解決方案將是好的,兩者都同樣kludgy

+2

謝謝!事情現在更清楚了:D(爲什麼有人會決定讓= -1?) – Svish 2009-05-19 08:49:10

1

想出了一個辦法做到這一點,雖然有可能是一個更好更清晰和合乎邏輯的方式...

=Sum(IIF(Fields!Transfered.Value, 1, 0)).ToString() + "/" + CountRows().ToString() 
1

我今天碰到這個,至少證實我不是唯一一個得到負面總和布爾值SSRS的價值。謝謝。

我的解決方案是使用絕對值ABS。我更喜歡這一點,而不僅僅是否定表達,因爲如果你在閱讀表達時不小心,可以更容易地看到' - '可能會被錯過。

,但它本質上是完全一樣的東西

0

這裏就是你如果計上的分組值

=CountDistinct(IIF(Fields!TrueOrFalseField.Value, 
        Fields!GroupedField.Value, 
        "BadValueToBeRemovedFromCount")) 
       -IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
           and First(Fields!TrueOrFalseField.Value) 
        , 0, 1) 

算第二部分

-IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
            and First(Fields!TrueOrFalseField.Value) 
         , 0, 1) 

刪除1路具有TrueFalse值,或者如果只有一個不同的false值。