“定义公式”对话框(模型设计器)
使用此对话框可创建包含公式的新字段。有关有效公式的示例,请参阅使用函数 (Report Builder 1.0)。
选项
字段
使用此选项卡可以查找报表模型内要包含在表达式中的字段。双击字段即可将其添加到表达式中。函数
使用此选项卡可选择要在表达式中使用的函数。双击函数即可将其添加到表达式中。有关每个函数的说明,请参阅以下部分。字段名称
为当前创建的表达式输入名称。公式
使用此项可编写和编辑公式。搜索
单击此项可启动**“搜索”**对话框。聚合到此处
如果双击“公式”框中显示的字段名称,则会显示主实体与字段的实体之间的关系。单击此项可在模型路径上的任意位置对表达式应用聚合。未应用任何筛选器
如果双击“公式”框中显示的字段名称,则会显示主实体与字段的实体之间的关系。您可以在模型路径上的任意位置对表达式应用筛选器。单击此项对表达式应用筛选器,再单击**“创建新筛选器”**。此时,将打开“筛选数据”对话框。函数快捷方式
单击函数快捷方式可向“公式”框显示的公式中添加相应的运算符。**“定义公式”对话框提供了最常用的一些函数的快捷方式;不过,您也可以从“函数”**选项卡中选择这些运算符。下面是对每个快捷方式的说明:+ 用于将两个值相加。
- 用于将一个值减去另一个值。
* 用于将两个值相乘。
/ 用于将两个值相除。
& 用于连接两个值。
( 用于开始一个计算。
) 用于结束一个计算。
函数
以下信息对**“定义公式”对话框的“函数”**选项卡上包含的每个函数进行了说明:
聚合函数
若要汇总一定范围的数值,请使用以下函数:
SUM
返回表达式中所有值的总和。语法
SUM(aggregate)
SUM 只能与包含数值的字段一起使用。将忽略 Null 值。
AVERAGE
返回表达式中所有非 Null 值的平均值(算术平均值)。语法
AVERAGE(aggregate)
AVERAGE 只能与包含数值的字段一起使用。将忽略 Null 值。
MAX
返回表达式中的最大值。语法
MAX(aggregate)
对于字符列,MAX 将按排序顺序来查找最大值。将忽略 Null 值。
MIN
返回表达式中的最小值。语法
MIN(aggregate)
对于字符列,MIN 将按排序顺序来查找最小值。将忽略 Null 值。
COUNT
返回组中非空项的数目。语法
COUNT(aggregate)
COUNT 始终返回 Int 数据类型值。
COUNTDISTINCT
返回组中某项的非空非重复实例数。语法
COUNTDISTINCT(aggregate)
STDev
返回某项的非 Null 值的标准偏差。语法
STDEV(aggregate)
STDevP
返回某项的非 Null 值的总体标准偏差。语法
STDEVP(aggregate)
VAR
返回某项的非 Null 值的方差。语法
VAR(aggregate)
VARP
返回某项的非 Null 值的总体方差。语法
VARP(aggregate)
条件函数
若要测试条件,请使用以下函数:
IF
如果指定了计算结果为 TRUE 的条件,将返回一个值;如果指定了计算结果为 FALSE 的条件,则返回另一个值。语法
IF(condition, value_if_true, value_if_false)
条件必须是计算结果为 TRUE 或 FALSE 的值或表达式。如果条件为 True,则 Value_if_true 表示返回的值。如果条件为 False,则 Value_if_false 表示返回的值。
IN
确定某项是否是集的成员。语法
IN(item, set)
Switch
对一系列表达式求值并返回与其中第一个为 True 的表达式相关联的表达式的值。Switch 可以有一个或多个条件/值对。语法
Switch(condition1, value1)
转换
若要将值从一种数据类型转换为另一种数据类型,请使用以下函数:
INT
将值转换为整数。语法
INT(value)
DECIMAL
将值转换为十进制数字。语法
DECIMAL(value)
FLOAT
将值转换为 float 数据类型。语法
FLOAT(value)
TEXT
将数值转换为文本。语法
TEXT(value)
日期和时间函数
若要显示日期或时间,请使用以下函数:
DATE
返回给定年、月、日的上午 12:00:00 的日期时间值。语法
DATE(year, month, day)
DATEONLY
从日期时间值返回年、月和日。语法
DATEONLY(datetime)
DATETIME
返回给定年、月、日、小时、分钟和秒的日期时间。语法
DATETIME(year, month, day, hour, minute, second)
YEAR
返回日期时间的年份值。语法
YEAR(datetime)
QUARTER
返回日期时间的日历季度 (1-4)。语法
QUARTER(datetime)
MONTH
返回日期时间中的月。语法
MONTH(datetime)
DAY
从日期时间中提取“日”。语法
DAY(datetime)
HOUR
从日期时间中提取小时。语法
HOUR(datetime)
MINUTE
从日期时间中提取分钟。语法
MINUTE(datetime)
SECOND
从日期时间中提取秒。语法
SECOND(datetime)
DAYOFYEAR
返回日期时间中一年中的第几天。1 月 1 日 = 1 到 12 月 31 日 = 366(假定是闰年)。语法
DAYOFYEAR(datetime)
WEEK
返回日历年中该周的数值。语法
WEEK(datetime)
DAYOFWEEK
返回星期几,从星期一开始。星期一 = 1 到星期日 = 7。语法
DAYOFWEEK(datetime)
NOW
返回当前日期和时间。语法
NOW( )
TODAY
返回当前日期。语法
TODAY( )
DATEDIFF
返回开始日期时间和结束日期时间之间的差。语法
DATEDIFF(interval, datetime, datetime)
DATEADD
返回将指定数目的时间间隔单位添加到原始日期时间后得到的日期时间。语法
DATEADD(interval, units, datetime)
逻辑函数
若要测试条件的逻辑,请使用以下函数:
AND
如果所有参数都为 TRUE,则返回 TRUE;如果一个或多个参数为 FALSE,则返回 FALSE。语法
AND(logical, logical)
参数的计算结果必须是逻辑值(例如 TRUE 或 FALSE),或者参数必须是包含逻辑值的数组或引用。如果数组或引用参数包含文本或空单元,则忽略这些值。
OR
如果任一参数为 TRUE,则返回 TRUE;如果所有参数均为 FALSE,则返回 FALSE。语法
OR(logical, logical)
参数的计算结果必须是逻辑值(例如 TRUE 或 FALSE),或者是包含逻辑值的数组或引用。如果数组或引用包含文本或空单元,则忽略这些值。
NOT
颠倒其参数的值。如果希望确保某子句不等于特定的值,请使用 NOT。语法
NOT(logical)
如果值为 False,NOT 将返回 True;如果值为 True,NOT 将返回 False。
数学函数
若要进行数值操作,请使用以下函数:
MOD
返回数字除以除数之后的余数。除数不能为 0。语法
MOD(number, divisor)
TRUNC
按指定的位数截断数字。如果数字为正,则从小数点右侧截断数字。如果数字为负,则从小数点左侧截断数字。语法
TRUNC(number, digits)
ROUND
将数字舍入到指定的位数。语法
ROUND(number, digits)
如果位数大于 0(零),则将数字舍入到指定的小数位数。如果位数为 0,则数字舍入到最近的整数。如果数字小于 0,则数字舍入到小数点左侧。
运算符
算术运算符
若要执行基本的数学运算(例如加法、减法或乘法)、组合数字以及生成数值结果,请使用以下运算符:
+ 加
用于将两个或多个项相加。语法
value + value
- 减
用于从一个项减去另一个项。语法
value- value
* 乘
用于使项相乘。语法
value* value
/ 除
用于对项进行除运算。除数不能为 0。语法
value/divisor
- 求反
更改值的符号。语法
-value
^ 求幂
用于对值进行幂运算(求幂)。语法
value^power
比较运算符
若要比较两个值并返回逻辑值 True 或 False,请使用以下运算符:
= 等于
用于使两个值相等。如果 value1 等于 value2,则为 True。语法
value1= value2
<> 不等于
用于指示两个值不相等。如果 value1 不等于 value2,则为 True。语法
value1 <> value2
> 大于
用于指示一个值大于另一个值。如果 value1 大于 value2,则为 True。语法
value1 > value2
>= 大于或等于
用于指示一个值大于或等于另一个值。如果 value1 大于或等于 value2,则为 True。语法
value1 >= value2
< 小于
用于指示一个值小于另一个值。如果 value1 小于 value2,则为 True。语法
value1 < value2
<= 小于或等于
用于指示一个值小于或等于另一个值。如果 value1 小于或等于 value2,则为 True。语法
value1 <= value2
文本函数
若要在报表中进行文本操作,请使用以下函数:
Concat (&)
将两个字符串组合为一个字符串。第二个字符串追加到第一个字符串的末尾。语法
string & string
Find
第一个字符串实例的位置。语法
FIND(string, substring)
Left
返回字符串最左侧的一些字符。如果在函数内指定的长度参数值小于零,则这种行为未定义。语法
LEFT(string, length)
Length
返回字符串中的字符数。语法
LENGTH(string)
Lower
将字符串从大写字符转换为小写字符。语法
LOWER(string)
LTrim
返回删除了前导空格的字符串。语法
LTRIM(string)
Replace
返回一个字符串,其中某个子字符串的所有实例均替换为另一个子字符串。语法
REPLACE(find, replace, string)
Right
返回字符串最右侧的一些字符。如果在函数内指定的长度参数值小于零,则这种行为未定义。语法
RIGHT(string, length)
RTrim
返回删除了尾随空格的字符串。语法
RTRIM(string)
Text
将数值转换为字符串。语法
TEXT(value)
Substring
返回字符串中的子字符串。如果在函数内指定的长度参数值小于零,则这种行为未定义。语法
SUBSTRING(string, start, length)
Upper
将字符串从小写字符转换为大写字符。语法
UPPER(string)
信息函数
若要返回有关用户的全局信息,请使用以下函数:
GetUserID
返回用户用来访问数据的 ID。语法
GETUSERID()
GetUserCulture
返回用户的语言或区域设置。Syntax
GETUSERCULTURE()