그룹함수 작성 도와주세요~~ 0 1 1,481

by ghgkdl [SQL Query] sql min 그룹함수 [2020.04.04 23:22:04]


안녕하세요.

매번 DB 개념이나 쿼리 도움받으려고 눈팅만 하다가 가입하고 나서 처음으로 글 작성해봅니다...

두 테이블간의 조인인데요 Min함수나 NVL을 이용하려고 하는데 잘 안나옵니다....

 

테이블 A

CODE(PK) DATA_C
1 DATA1
2 DATA2
......... .........

 

테이블 B

CODE(PK) file_name small_file_name file_no
1 A01 B01 1
1 A02 B02 2
1 A03 B03 3
2 A11   (null)
2 A12   (null)
.....      

 

테이블 A와 테이블 B를 조인해서 

CODE(PK)중에서 file_no가 가장 작은 하나의 데이터만을 뽑아야 되는 상황인데

file_no에 null이 있는 경우도 있습니다..

계속 이것저것 해보는데 CODE값이 중복되서 여러개가 잡힙니다....

 

제가 원하는 결과는 이런 형태입니다.

CODE(PK)가 중복됨 없이...

CODE(PK) | A테이블.DATA_C | B테이블.FILE_NAME | B테이블.min_file_name | B테이블.(가장작은 숫자의)file_no

 

min을 사용해서 Group by로 CODE(PK) | file_no는 뽑았으나

이게 B테이블 중간에 FILE_NAME까지 Group by 해버리면 CODE값이 여러개 생기더라구요...

 

도와주세요~~

 

 

 

by 마농 [2020.04.06 08:27:22]
SELECT *
  FROM (SELECT a.code, a.data_c
             , b.file_name, b.small_file_name, b.file_no
             , ROW_NUMBER() OVER(PARTITION BY a.code ORDER BY b.file_no, b.file_name) rn
          FROM code a
             , data b
         WHERE a.code = b.code
        ) a
 WHERE rn = 1
;

 

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