조건에 맞는 값 컬럼에 할당 0 3 803

by dnfrkwhr [Oracle 기초] [2014.04.01 12:47:23]


아래와 같은 테이블이 있습니다.
상품     개월    비율    인상
A    3    5.9    
B    1    5.9    
C    3    11    
    1    11    
해당조건에 맞으면 인상컬럼에 값을 할당하고자 합니다.  아래와 같은조건일 경우 어떻게 처리를 해줘야 하는지 조언 부탁드립니다.
DECODE문, CASE문을 써서 진행을 해보왔으나 너무 중첩이되어 지저분해지는 경향이 있네요.

상품이 A, 개월수가 3, 비율이 5.9일경우 인상컬럼에 1.0할당
상품이 A, 개월수가 1, 비율이 5.9일경우 인상컬럼에 0.6할당
상품이 A, 개월수가 3, 비율이 11 일경우 인상컬럼에 X할당
상품이 A, 개월수가 1, 비율이 11 일경우 인상컬럼에 X할당
상품이 B, 개월수가 3, 비율이 5.9일경우 인상컬럼에 1.0할당
상품이 B, 개월수가 1, 비율이 5.9일경우 인상컬럼에 0.6할당
상품이 B, 개월수가 3, 비율이 11 일경우 인상컬럼에 X할당
상품이 B, 개월수가 1, 비율이 11 일경우 인상컬럼에 X할당
상품이 C, 개월수가 1,2,3, 비율이 5.9일경우 인상컬럼에 1.0할당

by 김용학 [2014.04.01 13:54:15]

전 이번에는 설계적으로 접근해 볼게요.
테이블의 자료를 변경하시는게 어떨까 생각 되네요.
아래 같이요.
dnfrkwhr 님께서 설명하신 내용과 테이블의 내용이 전혀 일치하지 않아서요.
dnfrkwhr 님께서 설명하신 내용대로라면 결국 하드코딩밖에 안될 듯 싶네요.
아니면, WITH.. 를 사용해서 임시테이블을 하나 만드셔서 사용 해도 되구요.

실 테이블이건, WITH 임시테이블이건 아래 처럼 되어 있다면 계산하시는데 문제 없게죠?

SQL초보자의 시선으로 바라보고 설명했어요.
상품 개월  비율  인상
------------------------------------
 A  1   5.9   0.6
 A  3   5.9   1.0
 A  1   11   0
 A  3   11   0
------------------------------------
 B  1   5.9   0.6
 B  3   5.9   1.0
 B  1   11   0
 B  3   11   0
------------------------------------
 C  1   5.9   1.0
 C  2   5.9   1.0
 C  3   5.9   1.0

by 마농 [2014.04.01 15:26:40]
CASE WHEN 상품 = 'A' AND 개월수 = 3 AND 비율 = 5.9 THEN 1.0
     WHEN 상품 = 'A' AND 개월수 = 1 AND 비율 = 5.9 THEN 0.6
     WHEN 상품 = 'B' AND 개월수 = 3 AND 비율 = 5.9 THEN 1.0
     WHEN 상품 = 'B' AND 개월수 = 1 AND 비율 = 5.9 THEN 0.6
     WHEN 상품 = 'C' AND 개월수 IN (1,2,3) AND 비율 = 5.9 THEN 1.0
     ELSE 0 END AS 인상

by dnfrkwhr [2014.04.02 10:14:29]
2분 많은 도움되었습니다. 감사합니다.^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입