SSRS 常用函式 表示式

2021-07-25 23:36:57 字數 2869 閱讀 1294

1)單元格顯示行號,兩種方法實現,相當sql row_number() order ():,

=rownumber(nothing)

=runningvalue(1,sum,nothing)

2)按組區分行號,兩種方法實現:

=rownumber("組名")

=runningvalue(1,sum,"組名")

3)零除零報錯解決方法:

public function divide(x as double, y as double) as double

if  y=0.0  then

return 0.0

else

return x/y

end if

end function

接下來在表示式裡輸入你要相除的字段或者資料

=code.divide(sum(值1),sum(值2))

還有一種方法=a/iif(b=0,99999999999999,b),但你不能這麼寫:iif(b=0,0,a/b) 會產生bug,不要問為什麼,試試就知道。

4)ssrs 裡實現excel sumifs功能(如果你還不理解excel sumifs 的功能,請先檢視):

示例:sum(iif(fields!team.value="east",fields!leasearea.value,0))

執行結果是

#error

修改如下:

sum(iif(fields!team.value="east",cdbl(fields!leasearea.value),0.00))

原因:採用

cdbl

將字段轉換為雙精度值

double

,這樣型別計算才會正確。

5)lookupset 函式應用:

如果經常使用excel的同事,應該對excel的vlookup 函式不陌生,ssrs 也有類似功能的函式 lookupset,但vlookup 有單條件和多條件查詢,這裡說ssrs的兩個條件使用。

單條件:

=lookupset(資料集1滿足條件值列,資料集2滿足條件值列,要返回的值,"資料集1名")   就是兩個資料集間資料提取。

多條件:

lookupset(fields!店鋪名稱.value+「| |」+fields!時間分析類1.value+「| |」+fields!時間分析類2.value,

fields!店鋪名稱.value+「|  |」+fields!時間分析類1.value+「| |」+fields!時間分析類2.value,

fields!貨品id.value,"dataset3").length

也可自定義滿足固定值,如:

join(lookupset(fields!mon2.value+「||」+"營業", fields!mon2.value+"||"+fields!team.value,fields!fpqty.value,"dataset4"),",")

6)vbcrlf 函式應用:

這個函式主要是換行顯示效果,相當sql 的(select 'a' +char(13)+char(10)+'b'),下來介紹ssrs裡面如何實現這個功能。

比如你的資料值是這樣顯示:11-22,現在要 22 在11的下面顯示

=left(fields!

비고.value,instrrev(列值

,"-")-1)+vbcrlf+right(列值

,len(列值

)-instrrev(列值

,"-"))  這樣22 就自動換行顯示了。

7) 顯示登入到ssrs 的使用者名稱

表示式裡輸入=user!userid

8)顯示開啟報表時所花費的時間

表示式裡輸入:="runningtime  " +

cstr(datediff("s",globals!executiontime,now())\60\60)+ ":" +format((datediff("s",globals!executiontime,now())\60) mod60,"00") + ":" +format((datediff("s",globals!executiontime,now()) mod 60),"00")

9)通過資料集定義選擇時間引數

當前月的第一天到最後一天

selectconvert(date,dateadd(dd,-day(getdate())+1,getdate()),112)as date1,

(selectconvert(date,dateadd(day,-1,convert(char(8),dateadd(month,1,getdate()),120)+'1'),120))as date2

上個月的第一天到最後一天

select   convert(date,dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),120)as date1,

convert(date,dateadd(dd,-day(getdate()),getdate()),120)as date2

當前月的第一天到當前天

select convert(datetime, left(convert(char(8), getdate(),112),6) + '01')  as date1,

(select  convert(datetime,convert(varchar(10), getdate(),120)))as date2

10)連線資料來源的設定

連線字串內容:data source=伺服器ip;initial catalog=資料名,如圖

今天先寫到這裡,改天再繼續。。。。。。。。。。

函式表示式

函式定義有以下兩種方式 一種是函式宣告,一種是函式表示式。函式宣告 在執行 之前會先讀取函式宣告,即函式宣告提公升。函式表示式 常用語法形式是常規的變數賦值語句,即建立乙個匿名函式並賦值給乙個變數。函式表示式在使用之前必須賦值,否則會出錯,這點與函式宣告提公升不同。能夠將匿名函式作為其他函式的值進行...

函式表示式

定義函式的方式有兩種 一種是函式宣告,另一種是函式表示式 函式宣告語法格式如下 function functionname arg0,arg1,arg2 關於函式宣告,有乙個重要的特徵就是函式宣告提公升,意思是在執行 之前會先讀取函式宣告 函式表示式語法格式如下 var functionname f...

函式表示式

函式表示式在使用前必須先賦值。函式表示式,使用前必須先賦值var functionname function arg0,arg1 匿名函式或拉姆達函式 arguments.callee 是乙個指向正在執行的函式的指標,因此可以用它來實現對函式 的遞迴呼叫,function factorial num...