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 38637 게시물 읽기
No. 38637
view 만드는데..
작성자
아폴론(apollon)
작성일
2011-06-24 18:14
조회수
3,742

Table1내용입니다. 데이터는 159,000 여건 있습니다.

NAME                            Null?     Type
------------------------------- --------- -----
ACNT                        NOT NULL  VARCHAR2(8)
YY                          NOT NULL  CHAR(4)
MM                          NOT NULL  CHAR(2)
DD                          NOT NULL  CHAR(2)
SEQ                         NOT NULL  CHAR(3)
GBN                         NOT NULL  CHAR(1)
LNO                         NOT NULL  CHAR(3)
LSR                         NOT NULL  CHAR(2)
PJJY1                                 CHAR(12)
PJJY5                                 VARCHAR2(30)
BSJPNO                                CHAR(19)
JSJPNO                                CHAR(19)
BSAMT                       NOT NULL  NUMBER(*,0)
JSAMT                       NOT NULL  NUMBER(*,0)
PJJY10                                VARCHAR2(8)
PJJY13                                VARCHAR2(2)

================================================
데이터 상태는???

2111010,  2003, 12, 31,  000 , *,  507,  01,  B4713,   null,  20031231000*507,  null, 1122000,  0, null, null,
뭐 이런형태로 입력되어 있습니다.. null일수도 있고..값이 있을 수도 있고..                                                                                                                       0                                                                                                                                                    

이것을 select * from table1 하면 수초내에 조회됩니다.

자 다음처럼 View Table을 만들려고 합니다.

select
  acnt ,max(yy) yy,max(mm) mm ,max(dd) dd,pjjy1,pjjy5,
  bsjpno,sum(bsamt) bsamt,max(jsjpno) jsjpno,sum(jsamt) jsamt 
from Table1
group by  acnt,pjjy1,pjjy5,bsjpno

이러면?..하~~ 세월 이네요..
 

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

좀 이상한 부분이 있네요...
max(yy) yy,max(mm) mm ,max(dd) dd 이 부분은
max(yy||mm||dd) ymd 로 가져 오는게 맞지 않을까요..
일자의 최대값은 년월일이 묶여 있는 상태의 최대값 같은데
년월일을 따로 따로 max 해 오게되면 존재하지 않는 값이 되어
버립니다.

쿼리에서 where 조건이 없는 걸로봐서 전체 데이터가 대상이라면
힌트를 주시는 것도 방법일 듯 한데요.
select /*+ full(Table1) */

혹시라도 where 조건이 있다면 강제로 인덱스를 태우는 방법도
생각해보시면 될 듯합니다.

知音(sunnylee72)님이 2011-06-24 18:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38642ORA - 06052 에러 [2]
장마철
2011-06-28
4555
38640오라클 설치 문의 [1]
레이첼
2011-06-26
3175
38639특정 행에 대한 이전 값을 알고 싶습니다. [2]
장윤기
2011-06-25
3949
38637view 만드는데.. [1]
아폴론
2011-06-24
3742
38636pk 잡기 [3]
레이첼
2011-06-24
4344
38635ALL_TAB_COLUMNS를 테이블별로 한줄로 표시 [3]
CHOBO
2011-06-24
5462
38634MERGE INTO 구문 [1]
레이첼
2011-06-24
4834
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다