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 39980 게시물 읽기
No. 39980
시세이력과 현시세의 차이를 나타내려고 합니다.
작성자
초보
작성일
2013-01-18 17:42
조회수
5,517

안녕하세요.

다음과 같은 테이블이 있습니다.

품목에 대한 시세이력을 가지고 있는 테이블 A

ID SEQ 시세
A001 1 1000
A001 2 999
A001 3 900
B001 1 500
B001 2 550
C001 1 750

현재시세테이블 B

ID NAME 시세
A001 AAAA 950
B001 BBBB 550
C001 CCCC 700

위 2개의 테이블을 가지고 다음과 같은 결과를 가져오려고 합니다.

ID NAME 과거시세 현재시세 시세차이
A001 AAAA 900 950 Y
B001 BBBB 550 550 N
C001 CCCC 750 700 Y

이럴때

SELECT A.ID, A.NAME, (SELECT 시세 FROM B WHERE SEQ = (SELECT MAX(SEQ) FROM B WHERE ID = 'A001')) AS 과거시세, A.시세 AS 현재시세

, (CASE WHEN  (SELECT 시세 FROM B WHERE SEQ = (SELECT MAX(SEQ) FROM B WHERE ID = 'A001'))  <> A.시세  THEN 'Y' ELSE 'N' END) AS 시세차이

FROM A A

WHERE A.ID = 'A001'

 이렇게해도 될까요?

또 (CASE WHEN (SELECT 시세 FROM B WHERE SEQ = (SELECT MAX(SEQ) FROM B WHERE ID = 'A001')) <> A.시세 THEN 'Y' ELSE 'N' END) 으로 조건절에 넣어서 사용하려고 합니다.

결과는 나오는데 데이터가 점점 많이 들어나는 테이블이라서 조언을 듣고 싶습니다.

 

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

with t as (
select 'A001' id, '1' seq, 1000 qty from dual union all
select 'A001', '2', 999  from dual union all
select 'A001', '3', 900  from dual union all
select 'B001', '1', 500  from dual union all
select 'B001', '2', 550  from dual union all
select 'C001', '1', 750  from dual
), t1 as (
select 'A001' id, 'AAAA' name, 950 qty from dual union all
select 'B001', 'BBBB', 550 from dual union all
select 'C001', 'CCCC', 700 from dual
)
select b.id, b.name, a.last_qty, b.qty
     , decode(a.last_qty, b.qty, 'N', 'Y') gap
  from
      (select id
            , max(qty) keep (dense_rank last order by seq) last_qty
         from t
        group by id) a, t1 b
 where b.id = a.id

지나가다님이 2013-01-18 17:59에 작성한 댓글입니다. Edit

이렇게 빨리 답변해주실줄은....ㅜㅜ

지나가다님.....!!!!!

너무너무 감사합니다.

초보님이 2013-01-21 15:37에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39983group by와 union, 그리고 order by.... 질문입니다. [2]
정성태
2013-01-24
7323
39982한번에 묶어서 표현하고 싶습니다. [1]
초보자
2013-01-23
5178
39981Update문 문의드립니다. [2]
새하정
2013-01-22
4761
39980시세이력과 현시세의 차이를 나타내려고 합니다. [2]
초보
2013-01-18
5517
39979조건별 count [1]
사랑
2013-01-17
4726
39978야간근무시간 구하기...도와주세요. [1]
스님
2013-01-17
5661
39977INSTR 함수를 이용한 컬럼 데이터 재구성 [2]
rapid
2013-01-17
5221
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다