sql - 当参数没有值时,如何将表中的所有值传递到ssrs中?

标签 sql sql-server reporting-services sql-server-2008-r2

我传递两个参数,即@AccountId@key。当参数中没有值时,我想显示 @AccountId@key 数据库中存在的所有值,即 @AccountId@key。我想对同一个数据集执行此操作。这是可能的还是我创建了不同的数据集?

我正在使用的查询是:

CREATE PROCEDURE [dbo].[GetDenyList]
@AccountId nvarchar(100),
@key nvarchar(400)
AS
select New_AccountId AS 'AccountId/Key', New_Description AS 'Reason',CreatedOn AS 'Date'
  from abc.dbo.New_keydenylist 
 where New_AccountId is not null
   AND @AccountId = New_AccountId
 union all
select new_key AS 'AccountId/Key', New_Description AS 'Reason',CreatedOn AS 'Date' 
  from abc.dbo.New_keydenylist 
 where New_key is not null
   and @Key=New_key

最佳答案

如果我很好地理解您的问题,那么无论传递给 WHERE 子句的参数值如何,您都必须使用始终评估为 true 的任何谓词。例如WHERE 1 = 1:

 WHERE 1 = 1
 AND (@AccountId IS NOT NULL OR AccountId = @AccountId)

@key参数相同:

 WHERE 1 = 1
 AND (@key IS NOT NULL OR New_key = @key)

如果两个参数@key@AccountId均为NULL或其中之一,则WHERE 子句仍然有效并返回所有未呈现的行。

关于sql - 当参数没有值时,如何将表中的所有值传递到ssrs中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455665/

相关文章:

sql - 向超过 16 列的唯一行添加约束

vb.net - RDLC 调用过时的 SecurityAction 枚举

sql - 实现基于策略、基于时间和基于客户的定价

c# - 无法保存到数据库或从中检索(正确的信息)

c# - 在 C# 中从快照恢复 SQL Server 数据库

sql - 来自一个数据透视表的SQL FOR XML多层

reporting-services - SSRS - 在不属于报告的数据集中查找字段

c# - Visual Studio 2017 : . rptproj 与 .sqlproj

mysql - 使用 INNER JOIN 的 SQL 查询

sql - SSRS - 日期参数在 WebKit 浏览器中不显示日历控件