本文将向您展示 SSRS 或 SQL Server Reporting Services 中所有内置函数的列表,并附有简短的描述和简单的示例。我们已将 SSRS 函数分为不同的部分,每个部分处理不同的标准。您可以单击任何超链接以深入了解相应的函数。
除了以下函数,SSRS 还支持所有类型的运算符。因此,请参阅运算符文章以了解它们。
SSRS 字符串或文本函数
以下 SSRS 中的字符串或文本函数列表可帮助您处理字符串列。在实际应用中,您可能会以字符串格式获取日期和整数。在这种情况下,您可以使用以下函数将它们格式化为正确的数据类型。除此之外,您还可以修剪多余的空格、提取子字符串(实际字符串的一部分)、拆分和替换文本。
| SSRS 字符串函数 | 描述 | 示例 |
|---|---|---|
| Asc | 它返回字符的 ASCII 码(整数值)。 | Asc(Fields!Name.Value) |
| AscW | 它返回相应字符的整数值(ASCII 字符码)。 | AscW(Fields!Name.Value) |
| Chr | 它返回与 ASCII 码(整数值)关联的字符。 | Chr(84) |
| ChrW | 它返回与给定整数字符码(ASCII 码)关联的字符。 | ChrW(100) |
| Filter | 它将给定的字段格式化为货币值,并返回一个包含系统默认货币符号的表达式。 | Filter(Parameters!MultiItem.Value, “3”, True, CompareMethod.Binary) |
| Format | 它根据格式字符串表达式中给出的说明返回格式化的字符串值。 | Format (Fields!OrderDate.Value, “Short Date”) |
| FormatCurrency | 它返回包含给定左侧字符数的子字符串。 | FormatCurrency (Fields!Sales.Value, 0) |
| FormatDateTime | 它返回表示日期和时间值的字符串表达式。 | FormatDateTime (Fields!OrderDate.Value, DateFormat.GeneralDate) |
| FormatNumber | 它返回格式化为数字的表达式。 | FormatNumber (Fields!Sales.Value, 1) |
| FormatPercent | 它返回格式化为百分比并带有 % 符号的表达式。 | FormatPercent (Fields!Orders.Value / Sum(Fields!Orders.Value, “DataSet”), 2) |
| GetChar | 它从字符串字段中返回给定索引位置的字符。 | GetChar(Fields!ProductName.Value, 4) |
| InStr | 它在字符串字段中搜索给定的子字符串,并返回第一个出现的(整数索引)位置。 | InStr(Fields!ProductDescription.Value, “Bike”) |
| InStrRev | 它从右到左(反向)在字符串字段中搜索给定的子字符串,并返回第一个出现的索引位置(整数)。 | InStrRev (Fields!ProductDescription.Value, “Bike”) |
| Join | 它连接数组中的给定数量的子字符串,这些子字符串由第二个参数分隔,并返回一个字符串。 | Join(Parameters!Country.Value, “, “) |
| LCase | 它将给定的字符串或字符字段转换为小写。 | LCase(Fields!ProductName.Value) |
| Left | 它返回给定字符串的左侧部分,并根据指定的长度进行调整。 | Left(Fields!ProductName.Value, 2) |
| Len | 它返回字符串中的总字符数,或者存储变量所需的字节数。 | Len(Fields!Name.Value) |
| LSet | 它使用最后两个参数提取并返回给定字符串的一部分(子字符串)。 | LSet(Fields!ProductName.Value, 4) |
| LTrim | 它修剪或删除给定字段中的前导空格(开头)。 | LTrim(Fields!Address.Value) |
| Mid | 它返回给定字符串的右侧部分,并根据指定的长度进行调整。 | Mid(Fields!ProductName.Value, 2, 6) |
| Replace | 它有助于将匹配的文本替换为另一个子字符串。 | Replace(Fields!ProductName.Value, “Bike”, “Cycle”) |
| Right | 它从字符串字段中提取给定数量的右侧字符(子字符串)。 | Right (Fields!ProductName.Value, 5) |
| RSet | 它使用最后两个参数提取并返回给定字符串的一部分(子字符串)。 | RSet(Fields!ProductName.Value, 5) |
| RTrim | 它修剪或删除给定字段中的尾随空格(结尾)。 | RTrim(Fields!Address.Value) |
| Space | 它返回给定数量的空空格。 | Space(2) |
| Split | 它根据第二个参数拆分给定的字符串,并返回一维数组。 | Split(Fields!Name.Value,” “) |
| StrComp | 它比较字符串,并根据结果返回 -1、0 或 1。 | StrComp(Fields!Country.Value, Fields!Territory.Value) |
| StrConv | 它执行字符串转换。 | StrConv(Fields!FullName.Value, vbProperCase) |
| StrDup | 它将给定的字符串重复指定的次数。 | StrDup(5, “TG”) |
| StrReverse | 它执行字符串反转(字符顺序颠倒)。 | StrReverse(Fields!FullName.Value) |
| Trim | 它删除给定字段中的前导和尾随空格(如果有)。 | Trim(Fields!Address.Value) |
| UCase | 它将给定的字符串或字符字段转换为大写。 | UCase(Fields!ProductName.Value) |
SSRS 日期和时间函数
以下 SSRS 日期和时间函数列表可帮助您处理日期字段或列。您可以使用下面提到的函数来处理日期字段,例如,将其转换为日期、格式化、提取日期或时间部分,如小时、分钟、天、年等。除此之外,您还可以添加或减去天数、计算两个日期之间的差异等。
| SSRS 日期和时间函数 | 描述 | 示例 |
|---|---|---|
| CDate | 它将给定的字段转换为日期。 | CDate(Fields!HireDate.Value) |
| DateAdd | 它将给定天数添加到现有日期字段以生成未来的日期和时间值。 | DateAdd(“d”, 30, Fields!HireDate.Value) |
| DateDiff | 它返回两个日期字段之间的时间间隔差,作为 Long 值。 | DateDiff(“yyyy”, Fields!HireDate.Value, Fields!ResignDate.Value) |
| DatePart | 它使用给定的年、月、日构造日期值,其中时间设置为午夜 (00:00:00)。 | DatePart(“m”, Fields!HireDate.Value, 0, 0) |
| DateSerial | 它使用给定的日期信息字符串格式并返回 Date 值,其中时间设置为午夜 (00:00:00)。 | DateSerial(2024,01,18) |
| DateString | 它以字符串格式返回系统当前的日期。 | DateString() |
| DateValue | 它有助于从日期字段中打印日期,并返回 1 到 31 之间的整数值。 | DateValue(“January 01, 2024”) |
| Day | 它返回自午夜以来的总秒数。 | Day(Fields!OrderDate.Value) |
| FormatDateTime | 它返回表示日期和时间值的字符串表达式。 | FormatDateTime (Fields!ShipDate.Value, DateFormat.LongDate) |
| Hour | 它有助于从日期字段中打印小时,并返回 0 到 23 之间的整数值。 | Hour(Fields!OrderDate.Value) |
| Minute | 它有助于从日期字段中打印分钟值,并返回 0 到 59 之间的整数值。 | Minute(Fields!OrderDate.Value) |
| Month | 它有助于从日期字段中打印月份编号,并返回 1 到 12 之间的整数值。 | Month(Fields!OrderDate.Value) |
| MonthName | 它有助于从日期字段中打印月份名称,例如一月。 | MonthName(Fields!OrderDate.Value) |
| Now | 它返回系统当前的日期和时间。 | Now() |
| Second | 它有助于从日期字段中打印秒值,并返回 0 到 59 之间的整数值。 | Second(Fields!OrderDate.Value) |
| TimeOfDay | 它返回系统当前一天的时间。 | TimeOfDay() |
| Timer | 它返回自午夜以来的总秒数。 | Timer() |
| TimeSerial | 它使用给定的时间信息字符串格式并返回日期和时间值,其中日期值设置为 01/01/0001。 | TimeSerial(10,30,45) |
| TimeString | 它以字符串格式返回系统当前一天的时间。 | TimeString() |
| TimeValue | 它将星期名称作为字符串值返回。 | TimeValue(“10,30,45”) |
| Today | 它以字符串格式返回系统当前的日期。 | Today() |
| Weekday | 它有助于从日期字段中打印星期几,并返回整数值。 | Weekday(Fields!OrderDate.Value, 0) |
| WeekdayName | 它将星期名称作为字符串值返回。 | WeekdayName (Fields!OrderDate.Value) |
| Year | 它有助于从日期字段中打印年份,并返回 1 到 9999 之间的整数值。 | Year(Fields!OrderDate.Value) |
SSRS 数学函数
以下 SSRS 数学函数列表可帮助您对数字字段或列执行数学计算。您可以使用下面提到的函数来查找三角函数正弦、余弦、正切、双曲和反正版本。除此之外,您还可以找到指数、对数、平方根、幂、最大值、最小值、向下取整和向上取整值。
| SSRS 数学函数 | 描述 | 示例 |
|---|---|---|
| Abs | 它返回单精度浮点数的绝对正值。 | Abs(-10.9) |
| Acos | 它返回给定余弦值的角度。 | Acos(0.25) |
| Asin | 它返回给定正弦值的角度。 | Asin(0.25) |
| Atan | 它返回给定正切值的角度。 | Atan(0.25) |
| Atan2 | 它返回 8 位有符号整数的符号。 | Atan2(2, 5) |
| BigMul | 它返回两个 32 位整数的乘积。+ 或 – 2147483647 是最大和最小整数范围。 | BigMul(2147483647,-2147483647) |
| Ceiling | 它返回大于或等于给定浮点数的最小整数值。 | Ceiling(Fields!YearlyIncome.Value / 12) |
| Cos | 它返回给定角度的余弦值。 | Cos(45) |
| Cosh | 它返回给定角度的双曲余弦值。 | Cosh(45) |
| Exp | 它返回 e 的给定次幂。 | Exp(2) |
| Fix | 它返回数字的整数部分。 | Fix(Fields!Orders.Value * -0.5) |
| Floor | 它返回小于或等于给定浮点数的最大整数值。 | Floor(Fields!YearlyIncome.Value / 12) |
| Int | 它返回数字的整数部分。 | Fix(Fields!Orders.Value * -2.5) |
| Log | 它返回给定数字的自然对数(底为 e)。 | Log(2) |
| Log10 | 它返回给定数字以 10 为底的对数值。 | Log10(2) |
| Max | 它返回给定字段中所有非 null 值中的最大值。 | Max(Fields!Orders.Value) |
| Min | 它返回给定字段中所有非 null 值中的最小值。 | Min(Fields!Orders.Value) |
| Pow | 它返回给定数字的指定次幂。 | Pow(Fields!Income.Value,2) |
| Rnd | 它返回一个单精度随机数。 | Rnd() |
| Round | 它会将给定的双精度浮点值四舍五入到最接近的整数。 | Round(Fields!Sales.Value, 2) |
| Sign | 它返回 8 位有符号整数的符号。 | Sign(Fields!ProductCost.Value – Fields!Sales.Value) |
| Sin | 它返回给定角度的正弦值。 | Sin(45) |
| Sinh | 它返回给定角度的双曲正弦值。 | Sinh(45) |
| Sqrt | 它返回给定数字的平方根。 | Sqrt(25) |
| Tan | 它返回给定角度的正切值。 | Tan(30) |
| Tanh | 它返回给定角度的双曲正切值。 | Tanh(45) |
检查函数
以下 SSRS 检查函数列表可帮助您检查字段是否为数组、日期、数字或 null。
| SSRS 检查函数 | 描述 | 示例 |
|---|---|---|
| IsArray | 它检查给定变量是否为数组,并返回布尔值。 | IsArray(Parameters!Country.Value) |
| IsDate | 它检查给定表达式是否可以评估为日期,并返回布尔值。 | IsDate(Fields!OrderDate.Value) |
| IsNothing | 它检查给定表达式是否已分配对象,并返回布尔值。 | IsNothing(Fields!MiddleName.Value) |
| IsNumeric | 它检查给定表达式是否可以评估为数字,并返回布尔值。 | IsNumeric(Fields!Orders.Value) |
程序流程函数
以下 SSRS 程序流程函数列表可帮助您更改流程。与任何其他编程语言一样,IIF 作为 IF ELSE 语句。Switch 将处理多个条件,而 Choose 将从多个选项中选择所需的选项。
| SSRS 程序流程函数 | 描述 | 示例 |
|---|---|---|
| Choose | 它检查表达式,并根据结果返回两个给定对象中的一个。 | Choose(2, “100”, “200”, “300”) |
| IIf | 它检查表达式,并根据结果返回两个给定对象中的一个。 | IIf(Fields!Sales.Value >= 3000, “Good”, “Bad”) |
| Switch | 它有助于评估一系列表达式;如果任何表达式为 True,则返回相应的对象值。 |
SSRS 聚合函数
以下 SSRS 聚合函数列表可帮助您对数字字段或列执行各种聚合。您可以使用下面提到的函数来查找总计数、平均值、最小值、最大值、总和、方差、标准差以及第一个和最后一个值。它们还允许您查找运行总计和自定义聚合。
| SSRS 聚合函数 | 描述 | 示例 |
|---|---|---|
| Avg | 它返回给定字段中所有非 null 值中的平均值。 | Avg(Fields!Sales.Value) |
| Count | 它计算给定字段中的所有值并返回数量。 | Count(Fields!Name.Value) |
| CountDistinct | 它计算给定字段中所有不同的(唯一)值并返回数量。 | CountDistinct(Fields!Name.Value) |
| CountRows | 它计算给定范围内的总行数。 | CountRows() |
| First | 它从给定的表达式中返回第一个值。 | First(Fields!MiddleName.Value = “T”) |
| Last | 它从给定的表达式中返回最后一个值。 | Last(Fields!MiddleName.Value = “G”) |
| Max | 它使用指定的聚合函数返回指定表达式的运行聚合,例如运行总计。 | Max(Fields!Sales.Value) |
| Min | 它返回给定字段中所有非 null 值中的最小值。 | Min(Fields!Sales.Value) |
| StDev | 它返回给定字段中所有非 null 值中的标准差。 | StDev(Fields!Sales.Value) |
| StDevP | 它返回给定字段中所有非 null 值中的总体标准差。 | StDevP(Fields!Sales.Value) |
| Sum | 它返回给定字段中所有值的总和。 | Sum(Fields!Sales.Value) |
| Var | 它返回给定字段中所有非 null 值中的方差。 | Var(Fields!Sales.Value) |
| VarP | 它返回给定字段中所有非 null 值中的总体方差。 | Var(Fields!Sales.Value) |
| RunningValue | 它使用指定的聚合函数返回指定表达式的运行聚合,例如运行总计。 | RunningValue(Fields!SalesAmount.Value, Sum, “AdventureWorks”) |
| Aggregate | 它返回给定字段的自定义聚合,由数据提供者定义。 | Aggregate(Fields!Orders.Value) |
| Previous | 它返回给定字段的先前值或文本。 | Previous(Fields!Orders.Value) |
RunningValue 函数对于计算运行总计、平均值等很有用。
财务函数
以下 SSRS 财务函数列表可帮助您处理融资数据,如资产折旧、利率、现值和终值等。
| SSRS 财务函数 | 描述 |
|---|---|
| DDB | 它使用周期性固定利率和固定付款来计算年金的终值,并返回 Double。 |
| FV | 它使用周期性固定付款和固定利率来计算年金的周期总数,并返回 Double。 |
| IPmt | 它使用周期性固定付款和固定利率来计算年金给定期间的本金支付,并返回 Double。 |
| Nper | 它使用周期性固定付款和固定利率来计算年金给定期间的利息支付,并返回 Double。 |
| Pmt | 它使用未来要支付的周期性固定付款和固定利率来计算年金的现值,并返回 Double。 |
| PPmt | 它返回资产单个期间的直线折旧,并返回 Double。 |
| PV | 它使用周期性固定付款和固定利率来计算年金的付款,并返回 Double。 |
| Rate | 它返回年金每个周期的利率,并返回 Double。 |
| SLN | 它使用周期性固定付款和固定利率来计算年金给定期间的本金支付,并返回 Double。 |
| SYD | 它返回资产给定期间的年数总和折旧,并返回 Double。 |
SSRS 转换函数
以下 SSRS 转换函数列表可帮助您将一种数据类型转换为另一种数据类型。您可以使用下面提到的函数将给定的字段转换为布尔值、字节、字符、日期、十进制、双精度、整数、长整型、对象、短整型、单精度、字符串等。除此之外,您还可以从十六进制和八进制值中获取字符串。
| 转换函数 | 描述 | 示例 |
|---|---|---|
| CBool | 它将给定的字段转换为布尔值。 | CBool(Fields!Flag.Value) |
| CByte | 它将给定的字段转换为字节。 | CByte(Fields!CarsOwned.Value) |
| CChar | 它将给定的字段转换为 Char。 | CChar(Fields!MariitalStatus.Value) |
| CDate | 它将给定的字段转换为日期。 | CDate(Fields!HireDate.Value) |
| CDbl | 它将给定的字段转换为 Double。 | CDbl(Fields!Sales.Value) |
| CDec | 它将给定的字段转换为 Decimal。 | CDec(Fields!Sales.Value) |
| CInt | 它将给定的字段转换为 Integer。 | CInt(Fields!Income.Value) |
| Clng | 它将给定的字段转换为 Long。 | Clng(Fields!Sales.Value) |
| CObj | 它将给定的字段转换为 Object。 | CObj(Fields!Sales.Value) |
| CShort | 它将给定的字段转换为 Short。 | CShort(Fields!CarsOwned.Value) |
| CSng | 它将给定的字段转换为 Single。 | CSng(Fields!Income.Value) |
| CStr | 它将给定的字段转换为 String。 | CStr(Fields!HireDate.Value) |
| Fix | 它返回数字的整数部分。 | Fix(Fields!Orders.Value / -0.5) |
| Hex | 它以字符串格式返回数字的十六进制值。 | Hex(45) |
| Int | 它返回数字的整数部分。 | Int(Fields!Income.Value / 12) |
| Oct | 它以字符串格式返回数字的八进制值。 | Oct(10) |
| Str | 它返回数字的字符串表示。 | Str(Fields!Sales.Value) |
| Val | 它以适当的数据类型返回字符串字段中的数字。 | Val(Fields!Address.Value) |
SSRS 杂项函数
以下 SSRS 杂项函数列表在许多情况下都非常重要且有用。例如,Lookup 三重奏有助于在单个报表中合并两个数据集,查找对象的层级级别(深度)和范围。此外,您还可以获取先前的值并添加行号。
| SSRS 杂项函数 | 描述 | 示例 |
|---|---|---|
| InScope | 如果当前实例在给定范围内,则返回 true。 | InScope(“GroupName”) |
| Level | 它返回一个整数,表示递归层级的当前深度。 | Level() |
| Lookup | 它使用公共字段和次级数据集中的字段组合多个数据集。 | Lookup(Fields!DepID.Value, Fields!DeptID.Value, Fields!DepartmentName.Value, “DepartmentDS”) |
| LookupSet | 它从所需数据集中检索一组值。当存在一对多关系时,它很有帮助。 | LookupSet(Fields!TerGroupID.Value, Fields!TerritoryID.Value, Fields!StoreNames.value, “StoresDS”) |
| MultiLookup | 它从所需数据集中检索一组值,其中每对都有 1:1 的关系。MultiLookup 相当于对一组名称或键调用 Lookup。 | |
| Previous | 它从所需数据集中检索一组值,其中每对都有 1:1 的关系。MultiLookup 相当于对一组名称或键调用 Lookup。 | Previous(Fields!Name.Value) |
| RowNumber | 它返回给定范围内所有行的运行计数。 | RowNumber(“DSet”) |