“定义公式”对话框(报表生成器)
使用此对话框可创建包含公式的新字段。
选项
- 字段
使用此选项卡可以查找报表模型内要包含在表达式中的字段。双击字段即可将其添加到表达式中。
- 函数
使用此选项卡可选择要在表达式中使用的函数。双击函数即可将其添加到表达式中。有关每个函数的说明,请参阅以下部分。
- 字段名称
为当前创建的表达式输入名称。
- 公式
使用此项可编写和编辑公式。
- 搜索
单击此项可启动“搜索”对话框。
函数快捷方式
单击此项可向“公式”框显示的公式中添加相应的运算符。“定义公式”对话框提供了最常用的一些函数的快捷方式;不过,您也可以从“函数”选项卡中选择这些运算符。下面是对每个快捷方式的说明:+ 用于将两个值相加。
- 用于将一个值减去另一个值。
* 用于将两个文本值相乘。
/ 用于将两个值相除。
& 用于连接两个值。
( 用于开始一个计算。
) 用于结束一个计算。
右键单击后显示的选项
若要查看这些菜单选项,请在“公式”框或展开的公式区域中右键单击公式。
- 展开
单击此项可显示公式及其与上下文实体的关系。当希望进行筛选或指示聚合级别时,则需要如此操作。
- 重命名
单击此项可对“公式”对话框中显示的公式进行重命名。
- 聚合到此处
单击字段名称可更改聚合级别。只有在展开公式之后,此选项才可用。
- 未应用任何筛选器
如果您双击“公式”对话框中显示的某个字段名称,则会显示定义公式所基于的实体与该字段本身之间的关系。您可以在模型路径上的任意位置对表达式应用筛选器。单击此项可对表达式应用筛选器,再单击**“创建新筛选器”**。此时,将打开“筛选数据”对话框。
函数
以下信息对“定义公式”对话框的“函数”选项卡上包含的每个函数进行了说明:
聚合函数
若要汇总一定范围的数值,请使用以下函数:
SUM
返回一组值中所有非空值的总和。语法
SUM(aggregate)
SUM 可以用于仅包含数值的字段。将忽略空值。
AVERAGE
返回一组值中所有非空值的平均值(算术平均值)。语法
AVERAGE(aggregate)
AVERAGE 只能与包含数值的字段一起使用。将忽略空值。
MAX
返回一组值中所有非空值的最大值。语法
MAX(aggregate)
对于字符列,MAX 将按排序顺序来查找最大值。将忽略空值。
MIN
返回一组值中所有非空值的最小值。语法
MIN(aggregate)
对于字符列,MIN 将按排序顺序来查找最小值。将忽略空值。
COUNT
返回一组值中所有非空值的数目。语法
COUNT(aggregate)
COUNT 始终返回 Int 数据类型值。
COUNTDISTINCT
返回一组值中所有非空值的数目。语法
COUNTDISTINCT(aggregate)
STDev
返回一组值中所有非空值的标准偏差。语法
STDEV(aggregate)
STDevP
返回一组值中所有非空值的总体标准偏差。语法
STDEVP(aggregate)
VAR
返回一组值中所有非空值的方差。语法
VAR(aggregate)
VARP
返回一组值中所有非空值的总体方差。语法
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
返回日期时间的月份 (1-12)。语法
MONTH(datetime)
DAY
从日期时间中提取日。语法
DAY(datetime)
HOUR
从日期时间中提取小时 (0-23)。语法
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
Text
若要在报表中进行文本操作,请使用以下函数:
串联 (&)
将两个字符串组合为一个字符串。第二个字符串追加到第一个字符串的末尾。语法
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()