2009-05-06 4 views
3

이 쿼리는 줄 사이의 구문 오류를 제공합니다. 어떻게 해결할 수 있을까요?SQL에서 'when - between'문을 어떻게 사용할 수 있습니까?

alter FUNCTION [dbo].[fn_GetActivityLogsArranger] 
(
@time AS nvarchar(max) 
) 

RETURNS nvarchar(max) 
AS 
BEGIN 
declare @Return varchar(30) 

select @Return = case @time 
when between '15:00' and '15:30' then '15:00-15:30' 
when between '15:30' and '16:00' then '15:30-16:00' 
when between '16:00' and '16:30' then '16:00-16:30' 
when between '16:00' and '16:30' then '16:00-16:30' 
when between '16:30' and '17:00' then '16:30-17:00' 
when between '17:00' and '17:30' then '17:00-17:30' 
when between '17:30' and '18:00' then '17:30-18:00' 
else 'Unknown' 
Return @Return 
end

답변

4
alter FUNCTION [dbo].[fn_GetActivityLogsArranger] 
(
    @time AS varchar(30) 
) 
RETURNS 
varchar(30)AS 
BEGIN 
declare @Return varchar(30) 
select @Return = case 
when @time between '15:00' and '15:30' then '15:00-15:30' 
when @time between '15:30' and '16:00' then '15:30-16:00' 
when @time between '16:00' and '16:30' then '16:00-16:30' 
when @time between '16:00' and '16:30' then '16:00-16:30' 
when @time between '16:30' and '17:00' then '16:30-17:00' 
when @time between '17:00' and '17:30' then '17:00-17:30' 
when @time between '17:30' and '18:00' then '17:30-18:00' 
else 'Unknown' 
end 
Return @Return 
end 
+0

의견을 남겨주세요. 감사합니다 –

+0

감사합니다. 당신이 올바른지. 다른 ques보십시오. http : //stackoverflow.com/questions/829089/how-to-call-user-defined-function-in-order-to-use-with-select-group-by-order-by – Penguen

4

해당 구문 구문 형식을 사용할 수 없습니다. (위의 대문자 END 참조)

select @Return = case 
when @time between '15:00' and '15:30' then '15:00-15:30' 
when @time between '15:30' and '16:00' then '15:30-16:00' 
when @time between '16:00' and '16:30' then '16:00-16:30' 
when @time between '16:00' and '16:30' then '16:00-16:30' 
when @time between '16:30' and '17:00' then '16:30-17:00' 
when @time between '17:00' and '17:30' then '17:00-17:30' 
when @time between '17:30' and '18:00' then '17:30-18:00' 
else 'Unknown' END 

Return @Return 

는 또한, 당신은 당신의 경우 문장의 끝에 END 누락되었습니다 : 당신은 검사를 수행하는 경우를해야 할 것입니다.

0

그럼 우선 당신은 당신은 각 WHEN 절 이 예에서 변수를해야하는 각 때 문

select @Return = case 
when @time between ('15:00' and '15:30') then '15:00-15:30' 
when @time between ('15:30' and '16:00') then '15:30-16:00' 
when @time between ('16:00' and '16:30') then '16:00-16:30' 
when @time between ('16:00' and '16:30') then '16:00-16:30' 
when @time between ('16:30' and '17:00') then '16:30-17:00' 
when @time between ('17:00' and '17:30') then '17:00-17:30' 
when @time between ('17:30' and '18:00') then '17:30-18:00' 
else 'Unknown' 
0

에 @variable을 통과해야합니다.

case 
    when @time between '15:00' and '15:30' then '15:00-15:30' 
    when @time between '15:30' and '16:00' then '15:30-16:00' 
1

경우 구문 : CASE 언제 된 Boolean_expression는 result_expression [... N] 이 기능을 사용하지 않아야

0

[ELSE else_result_expression의] END, 당신은해야 테이블이나 테이블 반환 함수 시간 버킷을 사용하여 순수한 조인을 수행 할 수 있습니다. 예를 들어 my other post을 참조하십시오. 조인은 행 집합에서 함수를 호출하는 방식을 훨씬 능가합니다.

관련 문제