간질간질한 쿼리... 0 2 2,325

by 초보개발 [Oracle 기초] OR [2023.07.04 22:07:34]


안녕하세요...쿼리가 간질간질한데요...

SU GUBUN1 GUBUN2 GUBUN3
1 R100 R111 R112
2 R200 R212 R222
3 R300 R313 R333
4 R400 R414 R444

이런 데이터 형식입니다..

요청사항은 

파라메타값이 'R212' 일경우 

(1).GUBUN1 = 'R212' 먼저 검색하고 값이 있으면 그 행의 SU값을 가지고 오고.

(2).(1)의 값이 없을 경우 

    GUBUN2 = 'R212'를 다시 찾아 값이 있으면 그 행의 SU값을 가지고 오고 

(3).(2)도 없을 경우 

    GUBUN3='R212'를 다시 찾아 값이 있으면 그 행의 SU값을 가지고 오게 하는 요청입니다.

 

제가 생각한건 

WHERE문의 OR 구문인데 그러면 순차적(GUBUN1 - > GUBUN2 -> GUBUN3)이 순서대로 나오는게 아니라서 자꾸 간질간질하네요...

고수님들의 자문을 구합니다...

 

 

by 마농 [2023.07.04 22:56:31]

gubun1,2,3 에 겹치는 값은 없어 보이는데 맞나요?
중복값이 없다면 질문처럼 단계별로 경우의 수를 따져가면서 복잡하게 생각할 필요가 없어 보입니다.
 

SELECT su
  FROM t
 WHERE 'R212' IN (gubun1, gubun2, gubun3)
;

 


by 초보개발 [2023.07.05 00:02:10]

고맙습니다.

전 gubun1=  이런식으로 시작해서 그랬나봅니다.

다시 한번 배웁니다

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