2

我正在使用存储过程来生成基于 SP 参数的报告。我必须根据传递的参数加入不同的 where 条件。

例如。

ALTER PROCEDURE [dbo].[sp_Report_InventoryAging] 

@TitleFlag int=0, /*0-All veh, 1-Clear Title, 2-Without Clear Title*/

@CompName varchar(100) = 'ALL COMPANIES',

@CompBranchId varchar(50) = 'ALL',  /*All Offices*/

@StateId varchar(50)='All States'       /*All states*/ 

Select .... Where TitleFlag=@TitleFlag and

现在我想根据以下参数指定条件 -

  1. 如果不是 'ALL COMPANIES' 然后upper(Company)=upper(@CompName)
  2. 如果不是“所有办公室”,则OfficeID=@CompBranchId
  3. 如果不是“所有州”,则StateID=@StateID

如何根据参数值在 select 语句的 where 条件中合并所有这些条件?

非常感谢任何帮助。

4

1 回答 1

13

像这样做:

where
(upper(Company)=upper(@CompName) or @compName = 'ALL COMPANIES')
and 
(OfficeID=@CompBranchId or @CompBranchId = 'ALL OFFICES')
and
(StateID=@StateID or @StateID = 'ALL States')
于 2009-06-15T20:09:34.447 回答