임의의 기준값을 데이터를 비교해서 만들고 싶습니다.(내용수정) 0 6 205

by woni_rang [SQL Query] [2019.07.09 14:12:06]


내용 설명이 틀려서 다시 수정하였습니다. 죄송합니다.

with t as
(
select '01' as seq, '11' as temp1, '12' as temp2, '10' as temp3, '11' as temp4, '14' as temp5, 'aaa' as fan from dual union all
select '02' as seq, '12' as temp1, '15' as temp2, '11' as temp3, '16' as temp4, '11' as temp5, 'aab' as fan from dual union all
select '03' as seq, '18' as temp1, '11' as temp2, '11' as temp3, '12' as temp4, '13' as temp5, 'aac' as fan from dual union all
select '04' as seq, '12' as temp1, '10' as temp2, '10' as temp3, '11' as temp4, '13' as temp5, 'aad' as fan from dual
)
select * from t;

이런 temp컬럼을 가진 데이터가 있다고 한다면 같은 row의 temp컬럼의 값을 비교해서
마지막 컬럼에 임의의 기준값을 만들고 싶습니다.

temp1~5까지의 컬럼 중 10~14에 해당하는 값만 있다면 기준값을 10
10~14에 해당하는 값고 15~19에 해당하는 값이 같이 있다면 기준값을 10/15
실제 row에는 마지막 컬럼에 아래와 같이 데이터를 만들고 싶습니다.

01 11 12 10 11 14 aaa 10
02 12 15 11 16 11 aab 10/15
03 18 11 11 12 13 aac 10/15
04 12 10 10 11 13 aad 10

고수님들의 도움 부탁드리겠습니다. 감사합니다.

by 우리집아찌 [2019.07.09 14:22:26]
— 이해는 잘안가지만
— 모바일이라 살짝 틀릴수 있어요
select t.*
        , case when max(temp) over() >= 15 then ‘10/15’ else ‘10’ end as base
 from t ;

 


by woni_rang [2019.07.09 14:49:58]

제가 설명을 잘 못 적어서 수정했어요 죄송합니다.(__)


by 우리집아찌 [2019.07.09 15:06:53]
select t.*
         , case when greatest ( temp1 , temp2 , temp3 , temp4 , temp5 ) >= 15 then ‘10/15’ else ‘10’ end as base
  from t

 


by woni_rang [2019.07.09 15:31:34]

알려주신 방법을 응용해서 덕분에 잘 해결했습니다.
감사드리구요. 말로만 인사를 전할려니 죄송하네요. 즐거운 오후되세요~


by jkson [2019.07.09 15:23:20]

15~19만 있다면요?


by woni_rang [2019.07.09 15:29:24]

아 네 그건 임의로 만드는 기준값 말고 고정 기준값이 들어가는 컬럼이 따로 있어요.
제가 알고 싶었던건 10/15같이 나눠야 할 경우의 방법을 알고 싶었거든요.
else 부분에는 고정 기준값 컬럼을 쓸려구요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입