2014-04-08 2 views
0

기본적으로 계산 된 백분율을 텍스트 값에 할당해야하는 테스트 사례 시나리오가 있습니다. 예 : < 80 = 'B'< 70 = 'C'SQL보기에서 숫자 값에 문자열 값을 할당하는 방법

여기서 핸드 할당의 수에 기초하여 백분율로 값을 끌어 내 코드의 중요한 부분이다. I는 포장 시도

Select *... 
    100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
          /COUNT(TurnedIn) AS Percentage, 
From Table1 
When ... 

Case when (100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
          /COUNT(TurnedIn)) <= 80 Then 'B' As LetterGrade 

과 같은 경우가 있지만 지금까지 행운이 없습니다.

+0

당신이보기/테이블 구조를 보여 주시겠습니까? –

답변

2

쓰기로 :

Select *, --name all columns you want 
      case when Percentage < 80 then 'B' 
       when Percentage < 70 then 'C' 
       else 'Add the grade which should be default when above 2 
         case conditions are not met' 
      end as LetterGrade 
    from (  
    Select *, 
     100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
           /COUNT(TurnedIn) AS Percentage 
    From Table1 
    When ..) T 
2

당신이 시도 할 수 있습니다,

With CTE as 
(

Select (100 * COUNT(CASE TurnedIn WHEN 1 THEN 1 ELSE NULL END) 
        /COUNT(TurnedIn))  as Percentage 

    from myTable   
)   
select Case When Percentage <70 
      Then 'C' 
      When Percentage <80 
      Then 'B' 
      Else 'A' 
     End 
from CTE 
+0

이것은 매우 잘 작동 할 수 있지만 두 번째 대답은 제가 더 잘 알고 함께 갔다는 것입니다. 죄송 합니다만 도움을 주셔서 감사합니다. – Kevrone

+0

아니 문제 친구, 당신은 나를 upvote 수 있습니다! – AK47

+0

@Kevrone, 틀린 답을 틱하고 백분율 50으로 스크립트를 실행하려고하면 'B'가되지만 'C'가 반환됩니다. – AK47

관련 문제