2012-11-19 3 views
0

나는 흥미로운 문제가있다. 저는 스칼라 가치 함수를 작성할 것입니다. 매개 변수 중 하나가 테이블 열에 없습니다. where 절에서이 매개 변수 (@ImpUrgPri)를 사용해야합니다. 해당 매개 변수의 경우 테이블에 열이있는 조건이 있습니다. 그것에 대해 나를 도울 수 있습니까?사례 어디에서?

DECLARE @ImpUrgPri NVARCHAR(3) 
SET @ImpUrgPri = 'URG' 
DECLARE @Enum INT 
SET @Enum = 0 

select COUNT(*) 
from zODYA_vwCallReq_AllData 
where ActiveFlag = 1 
AND 
(CASE WHEN (@ImpUrgPri = 'PRI') THEN Priority_Enum == @Enum 
     WHEN (@ImpUrgPri = 'URG') THEN Urgency_Enum == @Enum 
     WHEN (@ImpUrgPri = 'IMP') THEN Impact_Enum == @Enum END) 

group by 
(CASE WHEN (@ImpUrgPri = 'PRI') THEN Priority_Enum 
     WHEN (@ImpUrgPri = 'URG') THEN Urgency_Enum 
     WHEN (@ImpUrgPri = 'IMP') THEN Impact_Enum END) 
+1

이미 코드를 가지고, 귀하의 질문에 무엇입니까? – deerchao

+0

where 절에서 블록 할 때 "잘못된 구문 근처에"오류가 반환됩니다. – juniorDev

답변

1

당신의 선택으로 될 수있다 :

select COUNT(*) 
from zODYA_vwCallReq_AllData 
where ActiveFlag = 1 
AND @Enum = (CASE WHEN (@ImpUrgPri = 'PRI') THEN Priority_Enum 
      WHEN (@ImpUrgPri = 'URG') THEN Urgency_Enum 
      WHEN (@ImpUrgPri = 'IMP') THEN Impact_Enum END) 

group by 
(CASE WHEN (@ImpUrgPri = 'PRI') THEN Priority_Enum 
     WHEN (@ImpUrgPri = 'URG') THEN Urgency_Enum 
     WHEN (@ImpUrgPri = 'IMP') THEN Impact_Enum END) 
+0

저에게 도움이됩니다. 고맙습니다. – juniorDev

0

가 나는 IF를 사용하여 세 가지 SELECT의 각 "때"경우에 대한 하나를 가지고 가장 좋은 것입니다 생각합니다.

또한 저장 프로 시저 내에서 동적으로 SQL을 만들면 저장 프로 시저를 약간 짧게 만들 수 있습니다. 여기서 세 가지 옵션 만 사용하면 3 가지 SELECT를 사용합니다.

0
DECLARE @ImpUrgPri NVARCHAR(3) 
SET @ImpUrgPri = 'URG' 
DECLARE @Enum INT 
SET @Enum = 0 

select COUNT(*) 
from zODYA_vwCallReq_AllData 
where ActiveFlag = 1 
AND 
(CASE @ImpUrgPri 
    WHEN 'PRI' THEN Priority_Enum 
    WHEN 'URG' THEN Urgency_Enum 
    WHEN 'IMP' THEN Impact_Enum 
END) = @Enum 
group by 
(CASE @ImpUrgPri 
    WHEN 'PRI' THEN Priority_Enum 
    WHEN 'URG' THEN Urgency_Enum 
    WHEN 'IMP' THEN Impact_Enum 
END)