2012-12-13 70 views
0

好吧,讓我們來看看我有的問題,看看有人能幫助我。我正在SSRS 2012(VS 2010)中創建矩陣報告。我選擇摺疊列組,並將列的默認「可見性」設置爲「隱藏」,並可以通過文本框進行切換。現在我有包含狀態的行和包含值字段的數據字段。現在SSRS的默認值是在「列組」被摺疊時總結數據字段。在SSRS的矩陣報告中顯示總列顯示爲列標題但不顯示空白總數

第1個部分問題:

這是偉大的,但我想它說:「總計」,而不是顯示一個空白。當我申請一個表達式到外地去是這樣的

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

它那麼它僅適用於列我擴大,而不是總額父組頭。任何想法如何解決這個問題?

第2部分的問題:

SSRS的默認是顯示空白單元格和空白頭文件,如果你的數據集的一部分沒有你您的收藏中指定的列。點擊'Column Grouping'屬性即可輕鬆解決此問題。點擊可視性和改變「當報告最初運行:」來表達,如:

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

現在我已經擺脫了我的空白標題和細胞,但倒塌的時候,現在我的主要組現在已經沒有了。

我要的是這個與我的數據:

COLLAPSED

廣場|共(S)

AL | 2

AZ | 1

OR |

WA | 7

EXPANDED

地點| A | B

AL | | 2

AZ | 1 |

或| |

WA | 5 | 2

GROUPING的默認是迄今爲止這樣的:

地點|(BLANK)

AL | 2

AZ | 1

OR |

WA | 7

EXPANDED

地點|(空白欄)| A | B

AL | | | 2

AZ | | 1 |

或| | |

WA | | 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 

回答

0

好了,所以基本上我搜羅互聯網,我發現SSRS想要的東西不能等同於在那裏。 EG:具有空值的標題是問題出在哪裏,SSRS假定您不希望具有值的空值,因此當您執行總計時,它會顯示未知值。儘管你可以在後端欺騙它,但它需要一些工作。

基本上,用最簡單的術語來說,你想要把你的數據收集和零識別爲零,以便他們可以被識別。因此,我做了一個網格佈局計算,然後將CTE中的空值顯示爲零,然後採用該CTE並將其從本質上恢復到原來的水平。然而,關鍵的區別是現在零值的值被表示爲零。你可能會說:「但是你在網格上得到零,我爲什麼要這麼做?」那麼你可以在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。忽略第一套,但(被Place刪除SELECT * FROM @temp順序)使用第二個在SSRS報告數據集

_3。建立與到位的行,代碼爲列,其值是數據

_4矩陣報表。通過右鍵單擊'Columns Groups'(應該是代碼顯示示例)>單擊組屬性>單擊Visibility>單擊第一部分下的Function選項卡,即可設置一個表達式來隱藏這些列:(您也可以切換這一點,如果你想和我做了另一個文本單元)

= IIF(IsNothing(領域!Code.Value),假,真)

_5。點擊「代碼」欄,然後點擊它上方的灰色欄。點擊右側的插入列,然後用'總計'和單元格'[總和(值)]'填充標題給你一個總數。如果總結起來,我不能爲了我的生活得到一個表達式來顯示總計標題不同。這種方法只顯示總數或者摺疊或不折疊。

1-6。現在,如果預覽可能顯示的零,並且我們不希望在所有情況下都這樣,那麼讓我們稍微操縱文本值。右鍵單擊「代碼」下的「值」並選擇「文本框屬性」。點擊左側窗格中的「數字」。選中'Show zero as'複選框並選擇''(無)。現在你的零點消失了。

_7。現在我有很多我最初想要的東西,但想要根據標題顯示的內容動態地對單元格進行顏色編碼。獲取代碼標題下的單元格值的屬性並選擇「背景顏色」>點擊下拉菜單並選擇表達式。把這個表達式:

= IIF(字段Code.Value = 「A」, 「麥田」, IIF(場Code.Value = 「B」, 「LightBlue」, 「白」)!)

我現在可以得到一些東西,出於某種原因,大多數人在互聯網上聽起來幾乎是不可能的。我可以將我的列設置爲一致的顏色,因爲定位現在綁定爲一個零值,但現在隱藏給最終用戶。

但你可能會說:「太好了,但我想錢值不是簡單的整數」。我也可以這樣做。點擊「代碼」下的「值」單元格的屬性,然後查看「格式」屬性。它應該默認爲這樣:

0.00(0.00);'

如果你想要錢做這個:

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

我希望這可以幫助別人,也會記住,如果你在說:「這對於小數據集很好,但我有一百萬或更多的行,我想要做類似的事情。」那麼我會替換臨時表或永久表的cte,並將您的數據轉儲到內存或永久表中,以便首先對其進行按摩。