하나의 값으로 다중 컬럼 조회 ! 0 4 577

by 민수홍 [2019.09.30 10:24:03]


현재 테이블은

테이블 명 : number_table

회차 /  첫번째공    /  두번째공     /     세번째공       /     네번째공       /    다섯번째공    /     여섯번째공   /   보너스공     /

컬럼명 : HIT_EP / HIT_NUMBER1 / HIT_NUMBER2 / HIT_NUMBER3 / HIT_NUMBER4 / HIT_NUMBER5 / HIT_NUMBER6/HIT_BOUNS

내용  :   876  /           5            /         16       /           21       /       26          /       34          /          42       /     24      /

내용  :   875  /           19          /         22      /           30      /             34     /         39       /             44    /       36      /

내용  :   874  /            1          /         15      /           19      /             23       /       28       /             42     /       32      /

내용  :   873 /          3             /         5       /           12      /             13       /       33        /            39     /       38      /

내용  :   872  /        2              /       4        /           30       /             32       /     33          /             43   /        29      /

.....

 

이런식으로 되어 있어서 현재 하고 싶은 것은 가장 마지막 회차 즉, 876이지만 앞으로 데이터가 매주 쌓이기 때문에

876으로 조회를 하면 안되고 rownum < 1과 같은 방법으로 처리를 해야 할 것 같습니다.

제가 하고 싶은 것은 예를 들어 로또 번호 5번에 가장 마지막 회차에 나왔었는지 안나왔었는지 조회를 해보고 싶습니다

 

예를 들면

select * from number_table

where rownum <= 1 and (hitnum1 || hitnum2 || hitnum3 || hitnum4 || hitnum5 || hitnum6 ) = '5';

이런식으로 조회를 해볼려고 헀는데 안되네욤 ...

 

결과 값이 있으면 true 이런식으로 나와도 괜찮은데 sql 고수님들 도움이 필요합니다ㅠ.ㅠ

 

by jkson [2019.09.30 11:06:41]
select nvl(max('Y'),'N') as YN
  from number_table
  where hit_ep = (select max(hit_ep)
                    from number_table)
    and (hit_number1 = 5 or hit_number2 = 5
      or hit_number3 = 5 or hit_number4 = 5
      or hit_number5 = 5 or hit_number6 = 5
      or hit_bonus = 5)

매번 질문을 올리시는 것보다 쿼리 기초 공부를 하시는 것이 좋을 것 같습니다.


by 민수홍 [2019.09.30 11:13:35]

좋은 답변 감사합니다 ^^ 얼른 sql도 기초를 차근 차근 익혀보도록 하겠습니다. 매번 물어보는것도 그렇긴하네요 ㅠ.ㅠ


by 마농 [2019.09.30 11:30:10]
SELECT CASE WHEN :v_num IN (hit_number1, hit_number2, hit_number3, hit_number4, hit_number5, hit_number6)
            THEN 'true' ELSE 'false' END x
  FROM number_table
 WHERE hit_ep = (SELECT MAX(hit_ep) FROM number_table)
;

 


by 꼬랑지 [2019.09.30 17:03:43]
공부하신다니 ALL,ANY,SOME 같은 함수도 공부해 보세요

SELECT *
FROM number_table
WHERE 1=1
AND HIT_EP =(SELECT MAX(HIT_EP) FROM number_table)
AND 5 = ANY(hitnum1,hitnum2,hitnum3,hitnum4,hitnum5,hitnum6,bonus)
;

 

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