2012-03-09 6 views
0

아래 원시 상태에 대한 적절한 신택스를 제안하십시오.
sql server-conditional where 절

ALTER PROCEDURE [dbo].[pro_name] 
@number as int , 

Select * from table 
if(@number=0) 
begin 
set @number=select max(number)from table 
end 
where [email protected] 


여기 제가 전달 된 입력 값이 '0'인 경우에 최대 값으로 설정해야 @number. 또한 wherer 절에서 같은 것을 사용하려고합니다.

이 두 정확히 같은 답을 가지고에서 지적되지 않고, 내가 맞았다 때문에, 여기에 다른 솔루션입니다 :

+0

'@ number'의 사용 사례 – joshua

+0

WHERE' 절 - 'MAX'를 계산하기 전이나 후에 '@ number'를 사용 하시겠습니까? –

+0

여기서 table.number = 사례 번호 0 일 때 MAX (테이블 번호) else 번호 (작동하지 않음) – RollerCosta

답변

2
ALTER PROCEDURE [dbo].[pro_name] 
@number as int=0 --I recommend a default value here too 
as 
set @number=case @number when 0 then (select max(number)from [table]) else @number end; 

Select * from [table] t 
where [email protected]; 
go 
0

편집

alter procedure [dbo].[pro_name] 
@number as int as 

select top 1 * from [table] 
where number = @number or @number = 0 
order by [table].number desc 

그러나이 유일한 것 숫자 열이 고유 한 경우 작동합니다. 귀하의 경우에는 그렇지 않을 수도 있습니다.