带表达式的 SSRS 标签格式
SSRS Label Formatting with expression
我目前正在处理 SSRS 报告,希望根据值是否超过一百万来更改格式
谁能帮我解决代码的语法问题?
=IIF(Sum(Fields!ID_Total_Spend_.Value, "DS_ClientsYear") > 1000000, £#,,.0M;('£'#,N2,'m'), £#,0,k;(‘£’#,N2,’k’))
我不确定你到底想达到什么目的,但这是我构建的一个例子,应该让你足够接近。
我假设
- 如果该值超过 1000000,那么您希望它显示为数百万,例如12341234 将显示为 £12.34M
- 如果值大于 1000 但小于 100 万,那么您希望它显示为千位数字,例如12341 将显示为 £12.34K
- 如果该值小于 1000,则显示 as-is 到小数点后 2 位,例如123 将显示为 £123.00
- 否定只是用括号括起来
我使用以下方法创建了一个示例数据集(如果您想重现)
DECLARE @t TABLE(id int, amount float)
INSERT INTO @t VALUES
(1, 1), (2,99), (3,99123), (4, 999123), (5, 1000000), (6, 12345678),
(7, -1), (8, -99), (9,-99123), (10, -999123), (11, -1000000), (12, -12345678)
SELECT * FROM @t
然后我添加了一个简单的 table 显示
ID 列(供参考)、未格式化的原始金额、使用“c2”标准货币格式格式化的原始金额、基于金额值的转换金额以及最后应用自定义格式的转换金额。
我只会解释最后一列,因为这可能是您想要的。
我做的第一件事是将最终文本框的表达式更改为
=SWITCH(
ABS(Fields!amount.Value) >1000000, Fields!amount.Value / 1000000,
ABS(Fields!amount.Value) >1000, Fields!amount.Value / 1000,
True, Fields!amount.Value
)
这只是根据它的值来划分 amount
。 SWITCH
在遇到第一个 returns 为真的表达式时停止,因此无需担心某些值之间的数量。 注意 我测试 ABS(amount)
以相同的方式对 +ive 和 -ive 数字进行除法运算。最后的 True
就像 else
.
您可以在“原始转换金额”列中看到此表达式给出的输出。
在最终文本框的格式 属性 中,我将表达式设置为
=SWITCH(
ABS(Fields!amount.Value) > 1000000, "£#.00M;(£#.00M)",
ABS(Fields!amount.Value) > 1000, "£#.00K;(£#.00K)",
True, "£#.00;(£#.00)"
)
我们正在执行与转换金额相同的检查,但这次返回的是有效的格式字符串。在这个例子中,我使用了一个 2 部分的字符串,semi-colon 之前的位适用于 +ive 数字和零。第二部分仅适用于 -5 个数字。
最终输出如下所示...
我目前正在处理 SSRS 报告,希望根据值是否超过一百万来更改格式 谁能帮我解决代码的语法问题?
=IIF(Sum(Fields!ID_Total_Spend_.Value, "DS_ClientsYear") > 1000000, £#,,.0M;('£'#,N2,'m'), £#,0,k;(‘£’#,N2,’k’))
我不确定你到底想达到什么目的,但这是我构建的一个例子,应该让你足够接近。
我假设
- 如果该值超过 1000000,那么您希望它显示为数百万,例如12341234 将显示为 £12.34M
- 如果值大于 1000 但小于 100 万,那么您希望它显示为千位数字,例如12341 将显示为 £12.34K
- 如果该值小于 1000,则显示 as-is 到小数点后 2 位,例如123 将显示为 £123.00
- 否定只是用括号括起来
我使用以下方法创建了一个示例数据集(如果您想重现)
DECLARE @t TABLE(id int, amount float)
INSERT INTO @t VALUES
(1, 1), (2,99), (3,99123), (4, 999123), (5, 1000000), (6, 12345678),
(7, -1), (8, -99), (9,-99123), (10, -999123), (11, -1000000), (12, -12345678)
SELECT * FROM @t
然后我添加了一个简单的 table 显示
ID 列(供参考)、未格式化的原始金额、使用“c2”标准货币格式格式化的原始金额、基于金额值的转换金额以及最后应用自定义格式的转换金额。
我只会解释最后一列,因为这可能是您想要的。
我做的第一件事是将最终文本框的表达式更改为
=SWITCH(
ABS(Fields!amount.Value) >1000000, Fields!amount.Value / 1000000,
ABS(Fields!amount.Value) >1000, Fields!amount.Value / 1000,
True, Fields!amount.Value
)
这只是根据它的值来划分 amount
。 SWITCH
在遇到第一个 returns 为真的表达式时停止,因此无需担心某些值之间的数量。 注意 我测试 ABS(amount)
以相同的方式对 +ive 和 -ive 数字进行除法运算。最后的 True
就像 else
.
您可以在“原始转换金额”列中看到此表达式给出的输出。
在最终文本框的格式 属性 中,我将表达式设置为
=SWITCH(
ABS(Fields!amount.Value) > 1000000, "£#.00M;(£#.00M)",
ABS(Fields!amount.Value) > 1000, "£#.00K;(£#.00K)",
True, "£#.00;(£#.00)"
)
我们正在执行与转换金额相同的检查,但这次返回的是有效的格式字符串。在这个例子中,我使用了一个 2 部分的字符串,semi-colon 之前的位适用于 +ive 数字和零。第二部分仅适用于 -5 个数字。
最终输出如下所示...