2013-04-22 5 views
5

다른 네 열의 값을 기반으로하는 계산 된 열을 만들려고합니다. 이 말이SQL Case 문 값 증가 값

Progress = CASE 
WHEN [Column1] = 'Yes' THEN Value+1 
WHEN [Column2] = 'Yes' THEN Value+1 
WHEN [Column3] = 'Yes' THEN Value+1 
WHEN [Column4] = 'Yes' THEN Value+1 
ELSE 0 END 

희망 : 열 1, Coulmn 2, 3 열, 4 열은 예 또는 계산 된 열 없음 최종 결과가 될 수있다,이 라인을 따라 뭔가 있어야의가 진행이라고 가정 해 봅시다 명백하게 위의 구문이 정확하지 않기 때문입니다.

+0

그래서 '해당 항목에'예 '의 합이 필요합니까? – cmd

+3

정말로 원하는 것을 명확히하기 위해 샘플 데이터와 결과를 제공하십시오. –

+0

RDBMS (SQL flavor) 란 무엇입니까? MS SQL Server입니까? –

답변

5

이런 소리가 여러분이 원하는 것입니다.

Progress = 
CASE WHEN [Column1] = 'Yes' THEN 1 ELSE 0 END + 
CASE WHEN [Column2] = 'Yes' THEN 1 ELSE 0 END + 
CASE WHEN [Column3] = 'Yes' THEN 1 ELSE 0 END + 
CASE WHEN [Column4] = 'Yes' THEN 1 ELSE 0 END 

"예"에 대해 0 + 1이 반환됩니다. SQL 서버에서

+0

그게 효과가! 신속한 대응에 감사드립니다. 나에게 많은 악몽과 시간을 보냈다 :-) – user1886816

+0

@ user1886816 문제 없습니다. 좋은 팁은 항상 하나의 CASE 문 내에 하나의 값만 포함하려고 시도하는 것입니다. 4 열 = 4 사례. –

1

:

SELECT * 
FROM mytable 
CROSS APPLY 
     (
     SELECT COALESCE(SUM(CASE val WHEN 'yes' THEN 1 END), 0) 
     FROM (VALUES (NULL)) q(v) 
     UNPIVOT 
       (
       val FOR col IN 
       (column1, column2, column3, column4) 
       ) c 
     ) q (progress) 

SQLFiddle를 참조하십시오.

+0

와우! 고마워,하지만 내 머리 바로 위에 갔다 :-( – user1886816