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 40443 게시물 읽기
No. 40443
하위값으로 채우기
작성자
이민우
작성일
2014-04-29 16:42
조회수
6,967

month val new_val

201401 null null

201402 null null

201403 A A

201404 null B

201405 null B

201406 B B

201407 null C

201408 null C

201409 null C

201410 null C

201411 null C

201412 C C

201501 null null

201502 null null

201503 null null

 

위와같이 month, val 데이터가 있을때 new_val 값을 구하고 싶습니다.

val 값이 null 이 아닌경우 하위의 값으로 new_val을 채우고자 합니다.

하위의 값은 null이 아닌 최초로 만나는 값입니다.

어떻게 해야하는지 문의드립니다.

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

WITH t AS
(
SELECT '201401' month, null val FROM dual
UNION ALL SELECT '201402', null FROM dual
UNION ALL SELECT '201403',  'A' FROM dual
UNION ALL SELECT '201404', null FROM dual
UNION ALL SELECT '201405', null FROM dual
UNION ALL SELECT '201406',  'B' FROM dual
UNION ALL SELECT '201407', null FROM dual
UNION ALL SELECT '201408', null FROM dual
UNION ALL SELECT '201409', null FROM dual
UNION ALL SELECT '201410', null FROM dual
UNION ALL SELECT '201411', null FROM dual
UNION ALL SELECT '201412',  'C' FROM dual
UNION ALL SELECT '201501', null FROM dual
UNION ALL SELECT '201502', null FROM dual
UNION ALL SELECT '201503', null FROM dual
)
SELECT month
     , val
     , FIRST_VALUE(val IGNORE NULLS) OVER(ORDER BY month
       ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) new_val
  FROM t
;

마농(manon94)님이 2014-04-29 18:11에 작성한 댓글입니다.

마농님 답변주셔서 감사드립니다.

답변주신 내용중에 한가지 다른점이 있는데요

201401, 201402 월은 new_val을 null로 만들려고 합니다.

질문드린바와같이 val 값이 null 이 아닌 최초값부터 하위값으로 채우고자 하거든요

그러니까 val 이 null이 아닌 최초값은 A (201403) 이므로 위에 두개의 row는 null 이 어야 합니다.

그게 풀리지 않아서 고민입니다.

감사합니다.

 

이민우님이 2014-04-30 09:02에 작성한 댓글입니다. Edit

SELECT month
     , val
     , NVL2( FIRST_VALUE(val IGNORE NULLS) OVER(ORDER BY month)
           , FIRST_VALUE(val IGNORE NULLS) OVER(ORDER BY month
             ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
           , null) new_val
  FROM t
;

마농(manon94)님이 2014-04-30 13:42에 작성한 댓글입니다.

마농님 감사합니다.

많은 도움 받았습니다.

 

이민우님이 2014-04-30 14:22에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40446날짜 계산 도와주세요 [4]
초보개발자
2014-05-07
7310
40445OUTER JOIN 튜닝 [2]
도와주세요.
2014-04-30
7650
40444데이터 베이스 필드 갯수 정의에 대하여 질문드립니다. [2]
최대호
2014-04-30
7420
40443하위값으로 채우기 [4]
이민우
2014-04-29
6967
40441오라클 테스트서버 스키마정보 실서버 반영 방법
김종욱
2014-04-24
6398
40440Commit 전에 데이터 보장? [2]
아폴론
2014-04-23
7024
40439FETCH LOOP 에서 변수에 줄바꿈을 넣고 싶은데 부탁드립니다. [2]
박재덕
2014-04-21
6684
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다