使用 string/varchar 值在 SSRS Report Builder 中添加参数,但 SQL 中的字段是数字
Adding a parameter in SSRS Report Builder with string/varchar values but field in SQL is numeric
我有一个报告,我正尝试在 Report Builder 中添加一个参数,但我遇到了问题,我需要做些什么才能将报告 运行 中的选定参数值传递到报告中 SQL 假设参数选择与存储在 table.
中的值不同
我的意思是这样的:
报表查询的 table 中有一个名为 ErrorLevel
的字段,它存储数值 (1, 2, 3, 4)。但是,这些值中的每一个都对应于一个文本字符串。
1 is Warning;
2 is Override;
3 is Restriction;
and 4 is Pending.
这些文本字符串是实际 运行 生成报告时显示的内容。我可以使用以下查询创建一个参数。
参数编号1
SET NOCOUNT ON
(Select '' as errorlevel
union
select distinct errorlevel from [TABLE]
where errorlevel is not null and errorlevel != ''
举报SQL
Select distinct
case errorlevel
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE]
where ('<ALL>' in (@errorlevel) or errorlevel in (@errorlevel))
但问题是,当最终用户 运行 生成报表并选择报表时,他们会看到数值(1、2、3 或 4),但他们想 see/select 字符串值(警告、覆盖、限制、待定)。
我尝试使用以下查询。
参数编号2
SET NOCOUNT ON
(Select '<ALL>' as errorlevel
union
select distinct
CASE ErrorLevel
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE]
where errorlevel is not null and errorlevel != ''
当我使用它时,参数将字符串值作为字符串而不是数字传递给报告中的 SQL,然后报告为空白。我知道我必须在 SQL 中做一些事情来获取参数传递的内容(例如警告、覆盖等)并将其转换为相应的数值,但不确定该怎么做。任何指导表示赞赏。
我会在 SQL 中的查询或 SSRS 中的数据集中添加一个字段,以将数字转换为所需的文本。
您可以对 SQL
使用相同的 CASE 语句
Select <CURRENT FIELDS>,
CASE ErrorLevel When 1 then 'Warning' When 2 then 'Override' When 3 then 'Restriction' When 4 then 'Pending' Else '' END as ErrorLabel
from <REST OF QUERY>
如果您无法在查询中执行此操作(由于使用存储过程或其他问题),您可以向 SSRS 中的数据集添加一个计算字段。
打开(双击)您的数据集并单击“字段”选项卡。
单击添加和 select 计算字段。
为您的新字段命名 (ErrorLabel)
对于表达式,使用 SWITCH 语句(就像一个蹩脚的 CASE 语句)
=SWITCH(Fields!ErrorLevel.Value = 1, "Warning",
Fields!ErrorLevel.Value = 2, "Override",
Fields!ErrorLevel.Value = 3, "Restriction",
Fields!ErrorLevel.Value = 4, "Pending",
1 = 1, "" )
我有一个报告,我正尝试在 Report Builder 中添加一个参数,但我遇到了问题,我需要做些什么才能将报告 运行 中的选定参数值传递到报告中 SQL 假设参数选择与存储在 table.
中的值不同我的意思是这样的:
报表查询的 table 中有一个名为 ErrorLevel
的字段,它存储数值 (1, 2, 3, 4)。但是,这些值中的每一个都对应于一个文本字符串。
1 is Warning;
2 is Override;
3 is Restriction;
and 4 is Pending.
这些文本字符串是实际 运行 生成报告时显示的内容。我可以使用以下查询创建一个参数。
参数编号1
SET NOCOUNT ON
(Select '' as errorlevel
union
select distinct errorlevel from [TABLE]
where errorlevel is not null and errorlevel != ''
举报SQL
Select distinct
case errorlevel
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE]
where ('<ALL>' in (@errorlevel) or errorlevel in (@errorlevel))
但问题是,当最终用户 运行 生成报表并选择报表时,他们会看到数值(1、2、3 或 4),但他们想 see/select 字符串值(警告、覆盖、限制、待定)。 我尝试使用以下查询。
参数编号2
SET NOCOUNT ON
(Select '<ALL>' as errorlevel
union
select distinct
CASE ErrorLevel
When 1 then 'Warning'
When 2 then 'Override'
When 3 then 'Restriction'
When 4 then 'Pending'
Else '' as errorlevel
from [TABLE]
where errorlevel is not null and errorlevel != ''
当我使用它时,参数将字符串值作为字符串而不是数字传递给报告中的 SQL,然后报告为空白。我知道我必须在 SQL 中做一些事情来获取参数传递的内容(例如警告、覆盖等)并将其转换为相应的数值,但不确定该怎么做。任何指导表示赞赏。
我会在 SQL 中的查询或 SSRS 中的数据集中添加一个字段,以将数字转换为所需的文本。
您可以对 SQL
使用相同的 CASE 语句Select <CURRENT FIELDS>,
CASE ErrorLevel When 1 then 'Warning' When 2 then 'Override' When 3 then 'Restriction' When 4 then 'Pending' Else '' END as ErrorLabel
from <REST OF QUERY>
如果您无法在查询中执行此操作(由于使用存储过程或其他问题),您可以向 SSRS 中的数据集添加一个计算字段。
打开(双击)您的数据集并单击“字段”选项卡。
单击添加和 select 计算字段。
为您的新字段命名 (ErrorLabel)
对于表达式,使用 SWITCH 语句(就像一个蹩脚的 CASE 语句)
=SWITCH(Fields!ErrorLevel.Value = 1, "Warning", Fields!ErrorLevel.Value = 2, "Override", Fields!ErrorLevel.Value = 3, "Restriction", Fields!ErrorLevel.Value = 4, "Pending", 1 = 1, "" )