Условный оператор where в операторе Select - PullRequest
2 голосов
/ 16 июня 2009

Я использую хранимую процедуру для генерации отчета по параметрам SP. Я должен присоединиться к различным, где условия в зависимости от параметров пройдены.

Например.

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. Если не «ВСЕ КОМПАНИИ», то верхний (компания) = верхний (@CompName)
  2. Если не «ВСЕ ОФИСЫ», тогда OfficeID = @ CompBranchId
  3. Если не «ВСЕ Штаты», то StateID = @ StateID

Как объединить все эти условия в пределах того, где условие оператора выбора зависит от значения параметра?

Любая помощь высоко ценится.

1 Ответ

13 голосов
/ 16 июня 2009

Сделай так:

where
(upper(Company)=upper(@CompName) or @compName = 'ALL COMPANIES')
and 
(OfficeID=@CompBranchId or @CompBranchId = 'ALL OFFICES')
and
(StateID=@StateID or @StateID = 'ALL States')
...