SSRS 常用函数、表达式

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=数据名,如图

 

 

 

 

 

 

 

今天先写到这里,改天再继续。。。。。。。。。。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值