-1

这是我的Query

如果我知道 BusinessUnitID 我必须传入 where 子句,如下所示的查询,

select * from tblHRIMS_EmployeeDetail 
where nvrResignedStatus='No' and nvrBusinessUnit= 'BSU-001' 

此查询的结果是:500 行

如果我不知道 BusinessUnitId 我不需要传入 where 子句,如下所示的查询,

select * from tblHRIMS_EmployeeDetail 
where nvrResignedStatus='No' 

此查询的结果是:1500 行

如何Where根据给定的输入动态更改子句。

注意:不需要Stored Procedure,我只需要查询。

4

4 回答 4

0

像这样:

SELECT * 
FROM tblHRIMS_EmployeeDetail 
WHERE nvrResignedStatus = 'No'
 AND (@nvrBusinessUnit IS NULL OR nvrBusinessUnit = @nvrBusinessUnit)
于 2012-09-15T07:20:38.733 回答
0
create procedure sp-name
@nvrBusinessUnit varchar(50)
as
begin
   select * from tblHRIMS_EmployeeDetail 
   where nvrResignedStatus='No' and nvrBusinessUnit= @nvrBusinessUnit 
end
于 2012-09-15T07:19:45.380 回答
0
declare @BusinessUnit varchar(50)

select @BusinessUnit = null 
-- or
select @BusinessUnit = 'bsu-001'

select * from tblHRIMS_EmployeeDetail  
where nvrResignedStatus='No' and nvrBusinessUnit= isnull(@BusinessUnit,nvrBusinessUnit)
于 2012-09-15T07:20:06.577 回答
0

如果您的查询在存储过程中,并且假设您有 @nvrBusinessUnit 变量,您可以执行以下操作:

select * from tblHRIMS_EmployeeDetail 
where nvrResignedStatus='No' and nvrBusinessUnit= isnull(@nvrBusinessUnit,nvrBusinessUnit)

如果这是您直接从应用程序查询的内容,那么您可以在那里构建字符串。

于 2012-09-15T07:20:15.990 回答