database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40961 게시물 읽기
No. 40961
최근 등록일의 데이타를 가져오는 쿼리 질문
작성자
김씨
작성일
2015-10-07 09:45
조회수
8,375

A 테이블 - ID, 제품

B테이블 -  ID, 버전, 등록일

 

원하는  쿼리는

A테이블기준으로 B테이블에 동일한 ID가 있으면 같이 가져와서 조회되게 하는데(아웃터조인)

B테이블에 동일한  ID가 여러개 있으면 등록일이 가장 최근것의 버전을 보여줘야 합니다

 

예)  A 테이블                B 테이블

       1  TV                      1     A버전     20140501

                                      1    B버전       20151031

 

결과  

      1   TV      B버전    20151031 

 

부탁드립니다

       

 

 

 

 

이 글에 대한 댓글이 총 4건 있습니다.

참고만 하세요..

오라클을 써본적이 없어 구문이 조금 다를수도 있을듯하나

큰 차이는 없을듯하네요..

 

---쿼리시작---

with tblA (id,제품) As
(    
      Select '1','TV'
)
,tblB (id,버전,등록일) As
(
      Select '1','A버전','20140501' Union All
      Select '1','B버전','20151031'
)
    Select a.id
          ,a.제품
          ,b.버전
          ,b.등록일
      From tblA a
                  Left Outer Join
                                  tblB b
                                         On a.id = b.id
                                        And b.등록일 = (
                                                            Select
                                                             Top 1 c.등록일
                                                              From tblB c
                                                             Where b.id = c.id
                                                          Order By c.등록일 Desc
                                                       )

---쿼리끝---     

 

---결과---

1 TV B버전 20151031

최한영(terry0515)님이 2015-10-07 10:32에 작성한 댓글입니다.

SELECT *
  FROM (SELECT a.id
             , a.제품
             , b.버전
             , b.등록일
             , ROW_NUMBER() OVER(PARTITION BY a.id ORDER BY b.등록일 DESC) rn
          FROM tblA a
          LEFT OUTER JOIN tblB b
            ON a.id = b.id
        )
 WHERE rn = 1
;

마농(manon94)님이 2015-10-07 11:06에 작성한 댓글입니다.

감사합니다

원하는 답을 얻었습니다

김씨님이 2015-10-07 11:38에 작성한 댓글입니다. Edit

SELECT *
  FROM a, b
 WHERE a.id = b.id(+)
   AND NOT EXISTS (SELECT 1
          FROM b q
         WHERE q.id = b.id
           AND q.등록일 > b.등록일);
 

skywalker님이 2015-10-26 18:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40964datetime끼리 계산
초보2
2015-10-08
8675
40963패키지/프로시져 사용 테이블
홍승종
2015-10-08
8521
40962GIS 좌표 관련 연산 방법
쿼리OTL
2015-10-07
8628
40961최근 등록일의 데이타를 가져오는 쿼리 질문 [4]
김씨
2015-10-07
8375
40960오라클 10g for solaris(SPARC)을 윈2012 r2에 설치 가능한가요? [1]
궁금이
2015-10-07
8019
40959처리 결과에 대해서 여쭤봅니다..
이성호
2015-10-06
8119
40958where절에 in 조건에 case when 사용시 [5]
쿼리몰라요
2015-10-05
8849
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.058초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다