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 40449 게시물 읽기
No. 40449
우메한 질문 하나드립니다
작성자
물새(mulshe)
작성일
2014-05-12 15:25
조회수
6,827

SELECT A.YYYYMM,A.ITEM_CD,B.RECV_PRICE

FROM (

 

SELECT Max(SubStr(B.RECV_DATE,1,6)) YYYYMM,A.ITEM_CD

FROM TB_CMSM_A_032 A

LEFT OUTER JOIN TB_CMSM_A_030 B ON A.SAUP_CD = B.SAUP_CD AND A.RECV_NO = B.RECV_NO

GROUP BY A.ITEM_CD

) A

LEFT OUTER JOIN (

 

SELECT Max(SubStr(B.RECV_DATE,1,6)) YYYYMM,A.ITEM_CD,A.RECV_PRICE

FROM TB_CMSM_A_032 A

LEFT OUTER JOIN TB_CMSM_A_030 B ON A.SAUP_CD = B.SAUP_CD AND A.RECV_NO = B.RECV_NO

GROUP BY A.ITEM_CD,A.RECV_PRICE

) B ON A.ITEM_CD = B.ITEM_CD

 

WHERE A.YYYYMM = B.YYYYMM AND A.ITEM_CD = '921000163'

 

=====================================================================================================

 

가장 최근에 입고된 아이탬의 단가를 알고 싶은 문제입니다

 

위와같이 하면 되긴하는데, 어거지같은 느낌이....

 

서브쿼리안 A.RECV_PRICE 에 간단한 함수하나 쓰면 될거 같은데 모르겠네요 ㅡ.ㅜ

 

 

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

-- 1. Group By, Keep --
SELECT a.item_cd
     , SUBSTR(MAX(b.recv_date), 1, 6) yyyymm
     , MAX(a.recv_price) KEEP(DENSE_RANK LAST ORDER BY b.recv_date) recv_price
  FROM tb_cmsm_a_032 a
  LEFT OUTER JOIN tb_cmsm_a_030 b
    ON a.saup_cd = b.saup_cd
   AND a.recv_no = b.recv_no
 WHERE a.item_cd = '921000163'
 GROUP BY a.item_cd
;
-- 2. Row_number --
SELECT item_cd
     , SUBSTR(recv_date, 1, 6) yyyymm
     , recv_price
  FROM (SELECT a.item_cd
             , b.recv_date
             , a.recv_price
             , ROW_NUMBER() OVER(ORDER BY b.recv_date DESC) rn
          FROM tb_cmsm_a_032 a
          LEFT OUTER JOIN tb_cmsm_a_030 b
            ON a.saup_cd = b.saup_cd
           AND a.recv_no = b.recv_no
         WHERE a.item_cd = '921000163'
        )
 WHERE rn = 1
;
-- 3. Order By, Rownum
SELECT item_cd
     , SUBSTR(recv_date, 1, 6) yyyymm
     , recv_price
  FROM (SELECT a.item_cd
             , b.recv_date
             , a.recv_price
          FROM tb_cmsm_a_032 a
          LEFT OUTER JOIN tb_cmsm_a_030 b
            ON a.saup_cd = b.saup_cd
           AND a.recv_no = b.recv_no
         WHERE a.item_cd = '921000163'
         ORDER BY b.recv_date DESC
        )
 WHERE ROWNUM = 1
;

마농(manon94)님이 2014-05-12 16:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40452각 개인에게 순번채번할때 [2]
짠심이
2014-05-13
7142
40451어려운 쿼리 문의 [1]
꿈꾸러기
2014-05-13
7200
40450일련된 번호를 묶는것에 대해 문의드립니다. [2]
초보
2014-05-13
6554
40449우메한 질문 하나드립니다 [1]
물새
2014-05-12
6827
40448데이터수정 여부 어떤 식으로 관리하세요 [1]
율리시스
2014-05-12
6111
40447연속된 시작값 종료값 [1]
이기자
2014-05-07
6774
40446날짜 계산 도와주세요 [4]
초보개발자
2014-05-07
7101
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다