繁体   English   中英

如何在SSRS中写一个表达式来过滤数据

[英]how to write an expression in SSRS to filter data

我需要根据参数值过滤我的结果。 如果显示"Open" ,则DueDate列应为= NULL,如果显示'Closed' ,则DueDate = NOT NULL ,如果显示"Both" ,则应获取所有DueDate s

我创建了查询参数“Status”,它给了我 3 个可能的值:

在此处输入图像描述

接下来我创建了报告参数"Status"Allow Multiple Values

在此处输入图像描述

现在我转到我的主要查询并转到过滤器:

在此处输入图像描述

在这里我不明白我怎么能写一个表达:

如果报告“状态”值=“打开”然后显示结果,其中 DueDate 为 NULL,如果报告“状态”值 =“已关闭”则 DueDate 不为空,如果报告“状态”值 =“两者”则显示给我所有 DueDates(null 和 not null)

另一件事是我的查询中已经有 case 语句:

ALTER Procedure
AS
@ShowOpen bit = 0,
@ShowClosed bit = 0
 SELECT
 FROM 
 WHERE 
              AND
                        (
                        (CASE WHEN (@ShowOpen = 1) THEN
                              CASE WHEN (tblNoteRecipients.CompletedDate IS NULL and tblNoteRecipients.IsDiary = 1) or tblNoteRecipients.UserGUID is null THEN 1 ELSE 0 END
                             -- CASE WHEN (tblNoteRecipients.CompletedDate IS NULL) THEN 1 ELSE 0 END
                        ELSE
                              1
                        END = 1)
                  AND
                        (CASE WHEN (@ShowClosed = 1) THEN
                              CASE WHEN (tblNoteRecipients.CompletedDate IS NULL) THEN 0 ELSE 1 END
                        ELSE
                              1
                        END = 1)
                  OR    ((@ShowOpen = 1) AND (@ShowClosed = 1))
                        )

在 SSRS 中有什么办法可以创建接受值 Open、Closed 和 Both 的参数?

添加了测试 1

在此处输入图像描述

在 tablix 中添加一个过滤器,如下所示:

在此处输入图像描述

Expression中使用:

=IIF(
(Array.IndexOf(Parameters!Status.Value,"Open")>-1 and 
Isnothing(Fields!DueDate.Value)) or
(Array.IndexOf(Parameters!Status.Value,"Closed")>-1 and not 
Isnothing(Fields!DueDate.Value)) or
(Array.IndexOf(Parameters!Status.Value,"Both")>-1),
 "Include","Exclude")

Value用途:

="Include"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM