我传递两个参数,即@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/