2012-08-10 7 views
1

일부 수학 계산을 수행 할 텍스트 열이 3 개인 테이블이 있습니다. 내가 달성하고자하는텍스트 열을 기반으로 한 SQL 수학 계산

Date  Column1 Column2 Column3 
----------------------------------------- 
2012-08-01 STABLE  NEG  STABLE 
2012-08-02 NEG  NEG  STABLE 
2012-08-03 STABLE  STABLE  STABLE 

이 원하는

  • 2/3 만약 열이 다음 '안정'같다가있는대로, 66 %, 즉 2/3을 반환 : 표는 다음과 같습니다 첫 번째 행
  • 1/3 열이 'STABLE'과 같으면 두 번째 행과 같이 33 % 즉 1/3을 반환합니다.
  • 3/3 열이 '안정'인 경우 세 번째 줄에있는 것처럼 100 % 즉 3/3을 반환합니다.

나는 이것을 SQL을 사용하여 어떻게 얻을 수 있는지 알고 싶습니까? 나는 현재 MSSQL Server 2008 R2에서 일하고있다.

제 질문이 충분히 분명하기를 바랍니다.

+0

이 테이블에 기본 키가 있습니까? 또한 실적에 관심이 있습니까? – RThomas

+0

예 날짜 필드를 기본 키로 사용합니다 –

답변

3

그래서, 이와 같은 것은 무엇입니까?

select 
    ((case when col1 = 'Stable' then 1.0 else 0.0 end) + 
    (case when col2 = 'Stable' then 1.0 else 0.0 end) + 
    (case when col3 = 'Stable' then 1.0 else 0.0 end))/3.0 
from yourtable 

출력에 형식을 지정할 수 있지만 원하는 내용에 매우 근접해야합니다.

+0

이것을 알려 드리겠습니다. –

+2

@RThomas는 '/ 3'을'/ 3.0'으로 설정하여 퍼센트를 얻습니다. 여기에 [SQL 피들]이 있습니다 (http://sqlfiddle.com/#!3/437c2/5) – Taryn

+0

@bluefeet, thanks ... good catch – RThomas

0

이러한 열 값에 대한 유일한 선택이 경우는

select (Len(Column1) + Len(Column2) + Len(Column3) - 9)/3/3.0 * 100.0 as 'Percent' 
    from Foo 

옵티마이 상수 계산을 처리한다. 명확성을 위해 표시됩니다.

Divine Comedy은 이와 같은 코드를 작성하는 사람들을위한 장소를 설명합니다.

관련 문제