使用 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, "" )