2013年9月24日 星期二

[SQL Server 2008R2][SSRS] 其他函數 RowNumber

RowNumber 函數,傳回指定範圍中資料列數的執行計數。其語法如下:

RowNumber( Scope )

RowNumber 函數可以做出自動編號的功能 ( RunningValue 也可以做到 ),也可以應用在資料儲存格根據序號進行隔行換色的效果。

Scope 可以指定資料集、資料區域、群組的名稱 ( 資料列群組或資料行群組 ),或為 Null (在 Visual Basic 中為 Nothing),指定要在其中評估資料列數的內容。 Nothing 指定最外層的內容,這通常為報表資料集。

注意:不支援在單一運算式中包含同時指定資料列群組和資料行群組的彙總。

先拉一個「資料表」物件至報表區中,由報表資料區,將資料集中的產品大類拖拉至資料列群組區詳細資料的上方。

將銷售日期拖拉至產品大類及詳細資料的中間。

再將銷售數量及銷售金額欄位拖拉至資料表中的詳細資料的儲存格。


調整一下表頭的文字及美編,並在銷售數量行按滑鼠右鍵,插入資料列於左方。 重複此一動作,並修改標題為整體序號及群組序號。

在整體序號及群組序號標題下方的儲存格分別輸入以下的運算式。
整體序號
=RowNumber(Nothing) 或 =RunningValue(1,Sum,Nothing)

群組序號 ( Scope 要填入資料列群組中的名稱 )
=RowNumber("PRODUCTCATEGORY_NAME") 或 =RunningValue(1,Sum,"PRODUCTCATEGORY_NAME")

結果如下圖所示,可看出差別了吧!群組序號會重新計算。

另外常用的應用就是隔行換色。先將要處理的儲存格一次選取。

再點選屬性視窗 BackgroundColr 中的運算式...

在運算式區域中輸入
=IIF(RowNumber(Nothing) Mod 2,"LightBlue","White")


RowNumber(Nothing) Mod 2 表示除以 2 取餘數,若餘 1 ( 表示 True ) ,背景色為 LightBlue,若餘 2 ( 表示 False ) ,背景色為 White。

1 則留言:

匿名 提到...

太神啦小鯨魚