根据 SSRS 中另一列的值更改数字格式
Change number formatting based on values of another column in SSRS
我想根据另一列更改值的格式。
基本上,基于 Type column ,我想更改数字格式。任何帮助将不胜感激。
以下是当前的 Tablix 报告。它有 3 列(类型、美国和英国)。它总是有 4 行(销售额、数量、百分比和备注)。
我尝试使用 Format 函数,但它会向我抛出其他行的错误。
开关(字段!Quantity.Value = "Quantity",FormatNumber(字段!US.Value,0))
类型美国英国
销售额 123.36 2122.2
数量 2345 3451
百分比 0.81 0.91
备注 NetSales GrossSales
日期 2020 年 5 月 20 日 11:00AM 2020 年 5 月 20 日 12:00PM
现在,我想将它们显示如下
类型美国英国
销售额 123.36 美元 2,122.2 英镑
数量 2,345 3,451
百分比 81% 91%
备注 NetSales GrossSales
日期上午 11 点中午 12 点
“Switch”函数非常适合您的场景。
唯一缺少的是您的条件的输出,
你可以在这里找到它:
SSRS - formatting fields to show currency symbol with two place decimal
或此处
formatting fields to show currency in SSRS
假设您的数据集查询实际上 returns 样本中出现的那 3 列,那么您需要测试 Type
列....
我在数据集查询中使用以下代码重新创建了记录集
DECLARE @t TABLE (Type varchar(10), US varchar(50), UK varchar(50))
INSERT INTO @t VALUES
('Sales', '123.36','2122.2'),
('Quantity', '2345','3451'),
('Percentage', '0.81',' 0.91'),
('Notes', 'NetSales','GrossSales')
SELECT * FROM @t
然后我添加了两个相同的表,一个用于显示未格式化的值,另一个用于在应用格式表达式后显示它们。
对于 US
列表达式,使用了以下表达式,它基本上将每个文本条目转换为一个值,然后从格式中应用。
=SWITCH(
Fields!Type.Value = "Sales", FORMAT(VAL(Fields!US.Value),"[=11=].00"),
Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!US.Value),"n0"),
Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!US.Value),"p0"),
Fields!Type.Value = "Date", FORMAT(cdate(Fields!US.Value), "HH:mm tt")
True, Fields!US.Value
)
英国的表达方式几乎相同。
=SWITCH(
Fields!Type.Value = "Sales", FORMAT(VAL(Fields!UK.Value),"£0.00"),
Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!UK.Value),"n0"),
Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!UK.Value),"p0"),
Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")
True, Fields!UK.Value
)
注意结局True
就像ELSE
最终输出看起来像这样...
供参考
"n0" 表示使用小数点后零位的千位分隔符,"p0" 表示格式为小数点后零位的百分比。
根据来自 OP
的更多信息进行更新
如果您有一个字符串形式的日期,例如May 20 2020 11:00AM
然后您可以在 `True, Fields!UK.Value 之前向开关添加额外的一行。我编辑了上面的表达式以允许日期是字符串
使用Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")
我们所做的只是使用 CDATE() 将字符串转换为日期,然后格式化 tat 以仅以 AM/PM 格式显示小时数。
=FORMAT(cdate(Fields!dt.Value), "HH:mm tt")
我想根据另一列更改值的格式。 基本上,基于 Type column ,我想更改数字格式。任何帮助将不胜感激。
以下是当前的 Tablix 报告。它有 3 列(类型、美国和英国)。它总是有 4 行(销售额、数量、百分比和备注)。 我尝试使用 Format 函数,但它会向我抛出其他行的错误。 开关(字段!Quantity.Value = "Quantity",FormatNumber(字段!US.Value,0))
类型美国英国
销售额 123.36 2122.2
数量 2345 3451
百分比 0.81 0.91
备注 NetSales GrossSales
日期 2020 年 5 月 20 日 11:00AM 2020 年 5 月 20 日 12:00PM
现在,我想将它们显示如下
类型美国英国
销售额 123.36 美元 2,122.2 英镑
数量 2,345 3,451
百分比 81% 91%
备注 NetSales GrossSales
日期上午 11 点中午 12 点
“Switch”函数非常适合您的场景。
唯一缺少的是您的条件的输出,
你可以在这里找到它:
SSRS - formatting fields to show currency symbol with two place decimal
或此处
formatting fields to show currency in SSRS
假设您的数据集查询实际上 returns 样本中出现的那 3 列,那么您需要测试 Type
列....
我在数据集查询中使用以下代码重新创建了记录集
DECLARE @t TABLE (Type varchar(10), US varchar(50), UK varchar(50))
INSERT INTO @t VALUES
('Sales', '123.36','2122.2'),
('Quantity', '2345','3451'),
('Percentage', '0.81',' 0.91'),
('Notes', 'NetSales','GrossSales')
SELECT * FROM @t
然后我添加了两个相同的表,一个用于显示未格式化的值,另一个用于在应用格式表达式后显示它们。
对于 US
列表达式,使用了以下表达式,它基本上将每个文本条目转换为一个值,然后从格式中应用。
=SWITCH(
Fields!Type.Value = "Sales", FORMAT(VAL(Fields!US.Value),"[=11=].00"),
Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!US.Value),"n0"),
Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!US.Value),"p0"),
Fields!Type.Value = "Date", FORMAT(cdate(Fields!US.Value), "HH:mm tt")
True, Fields!US.Value
)
英国的表达方式几乎相同。
=SWITCH(
Fields!Type.Value = "Sales", FORMAT(VAL(Fields!UK.Value),"£0.00"),
Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!UK.Value),"n0"),
Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!UK.Value),"p0"),
Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")
True, Fields!UK.Value
)
注意结局True
就像ELSE
最终输出看起来像这样...
供参考 "n0" 表示使用小数点后零位的千位分隔符,"p0" 表示格式为小数点后零位的百分比。
根据来自 OP
的更多信息进行更新如果您有一个字符串形式的日期,例如May 20 2020 11:00AM
然后您可以在 `True, Fields!UK.Value 之前向开关添加额外的一行。我编辑了上面的表达式以允许日期是字符串
使用Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")
我们所做的只是使用 CDATE() 将字符串转换为日期,然后格式化 tat 以仅以 AM/PM 格式显示小时数。
=FORMAT(cdate(Fields!dt.Value), "HH:mm tt")