ROW_NUMBER() 을 사용하여 두 테이블의 join을 걸고 싶습니다. 0 2 587

by hk88612 [SQL Query] [2021.05.13 22:21:24]


테이블의 seq의 마지막 값을  구해서 결과 값을 추출하고 싶은데, 

해당 쿼리로 구현이 맞는지.... 

이렇게 보통 쓰는경우도 있는지 궁금합니다. ㅠ

 

A  B      C         D      E    F  g 
----------------------------
A A01 A0101       A010101 001 Y     
A A01 A0101       A010101 002 N     
A A01 A0101       A010101 003 Y
A A02 A0201       A020201 001 Y
A A02 A0202       A020202 001 Y
A A02 A0203       A020301 001 Y
A A02 A0203       A020302 001 Y
A A02 A0203       A020302 002 Y
A A02 A0203       A020302 003 Y
A A02 A0203       A020302 004 Y

  A      B         C      D    
--------------------------
 A0101 가나다 설명     001    Y
 A0101 가나다 설명1    002    N
 A0101 가나다 설명2    003    Y
 A0201 가가가 설명1234 001    Y
 A0202 가가가 설명1111 001    Y
 
 
 SELECT
T1.a, T2,b
FROM
(SELECT a, b
  FROM (SELECT a, b
             , ROW_NUMBER() OVER(PARTITION BY a, b, c, d ORDER BY e DESC) rn
          FROM tabal_a
         WHERE a = 'A'
        ) a
 WHERE rn = 1
 )T1 , (SELECT a, b
  FROM (SELECT a, b
             , ROW_NUMBER() OVER(PARTITION BY a, b, c, d ORDER BY e DESC) rn
          FROM tabal_B
        ) a
 WHERE rn = 1
 )T2 
 WHERE
 t1. c =t2.a
and t1.a = (select max(c) from   tabal_B s1 where s1.a = t1.c)   
order by t1.g (정렬 순서 ) 
 
 결과 값 
 
 A0101 가나다 설명2     003    Y
 A0201 가가가 설명1234 001    Y
 A0202 가가가 설명1111 001    Y

by 마농 [2021.05.14 08:19:49]

올려주신 쿼리와 결과가 다른데요? 항목들이 일치하지 않네요.
쿼리가 너무 복잡하기도 하구요.
원하시는 결과를 뽑는 쿼리라면 다음과 같이 해도 충분합니다.

SELECT *
  FROM (SELECT a, b, c, d
             , ROW_NUMBER() OVER(PARTITION BY a ORDER BY c DESC) rn
          FROM tabal_B
        ) b
 WHERE rn = 1
;

 


by hk88612 [2021.05.14 09:10:36]

감사 합니다!!! 

 

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