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
운영게시판
최근게시물
Sybase Q&A 1331 게시물 읽기
No. 1331
Temp Table 에서의 rollup 처리 오류???
작성자
작성일
2005-10-17 16:50ⓒ
2005-10-17 16:56ⓜ
조회수
4,488

아래 IQ 테이블 사이즈 구하는 프로시져를 수정을 약간하다가 발견한 사항입니다.

 

 

1. create table #tablesize_temp 로 생성해서 다음 쿼리를 날리면..

결과값이 제대로 나옵니다.

 

  select T.OwnerTable as OwnerTable,

     sum(T.Columns) as Columns,

     sum(T.KBytes) as KBytes,

     sum(T.Pages) as Pages,

     sum(T.CompressedPages) as CompressedPages,

     sum(T.NBlocks) as NBlock

  from (select Ownername||'.'||Tablename as OwnerTable,

         cast(Columns as bigint) as Columns,

         cast(KBytes as bigint) as KBytes,

         cast(Pages as bigint) as Pages,

         cast(CompressedPages as bigint) as CompressedPages,

         cast(NBlocks as bigint) as NBlocks

      from #tablesize_temp ) T

  group by rollup(T.OwnerTable);

 

결과값:

OwnerTable Columns KBytes Pages CompressedPages NBlocks

DBA.sybase 1 768 5 4 24

DBA.sybase2 1 768 5 4 24

DBA.x 1 1952 10 7 61

    132 3014720 12695 11963 94210 <--rollup 으로 나온값

 

2. Declare local Temporary Table tablesize_temp 로 생성해서 다음의 쿼리를 날리면

rollup 된 값이 나오지 않습니다.

 

  select T.OwnerTable as OwnerTable,

     sum(T.Columns) as Columns,

     sum(T.KBytes) as KBytes,

     sum(T.Pages) as Pages,

     sum(T.CompressedPages) as CompressedPages,

     sum(T.NBlocks) as NBlock

  from (select Ownername||'.'||Tablename as OwnerTable,

         cast(Columns as bigint) as Columns,

         cast(KBytes as bigint) as KBytes,

         cast(Pages as bigint) as Pages,

         cast(CompressedPages as bigint) as CompressedPages,

         cast(NBlocks as bigint) as NBlocks

      from tablesize_temp ) T

  group by rollup(T.OwnerTable);

 

결과값:

OwnerTable Columns KBytes Pages CompressedPages NBlocks

DBA.sybase 1 768 5 4 24

DBA.sybase2 1 768 5 4 24

DBA.x 1 1952 10 7 61

 

 

 

쿼리 구조는 모두 똑같은데 테이블의 생성관계가 다를 뿐입니다..

 

현재 시스템의 버전은 sp_iqstatus 로 확인한바로는

12.5.0/050425/P/ESD 16/RS6000MP/AIX 5.1.0/64bit/2005-04-25 17:02:55

 

최신 패치가 아니라서 그런건지도 모르겠네요.

 

 

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

간단하게 테스트해 봤습니다.

 

begin
declare local temporary table temp1
(
a char(1) null,
b int null
)
in SYSTEM on commit preserve rows;

insert into temp1 values ('A', 100);
insert into temp1 values ('A', 100);
insert into temp1 values ('B', 100);

select a, sum(b) from temp1
group by rollup(a);

end;

 

-- 결과

 a sum(temp1.b)
 (Null) 300
 A 200
 B 100

이상없이 잘 됩니다.

 

소스를 보니 컬럼 renaming을 할 때 동일한 이름으로 많이 하셨네요.

IQ는 컬럼 renaming을 할 때 소스 컬럼과 동일하게 주시면

이상한 결과를 얻을 수 있습니다.

그 부분을 바꿔보세요.

 

select T_OwnerTable as OwnerTable,

     sum(T_Columns) as Columns,

     sum(T_KBytes) as KBytes,

     sum(T_Pages) as Pages,

     sum(T_CompressedPages) as CompressedPages,

     sum(T_NBlocks) as NBlock

  from (select Ownername||'.'||Tablename as T_OwnerTable,

         cast(Columns as bigint) as T_Columns,

         cast(KBytes as bigint) as T_KBytes,

         cast(Pages as bigint) as T_Pages,

         cast(CompressedPages as bigint) as T_CompressedPages,

         cast(NBlocks as bigint) as T_NBlocks

      from tablesize_temp ) T

  group by rollup(T_OwnerTable);

존넘님이 2005-10-18 20:50에 작성한 댓글입니다. Edit

음..쿼리문 바꿔서 해봤지만...여전히 Temporary 로 만들면 안되는군요.

 

ㅡㅡ;

 

 

이상하군요.. 여기 시스템이 이상한가??? 아님 내가 이상한가??? ㅎㅎ

 

-------------------------------------------------------------------

버전으로 인한 차이인듯 합니다 현재 ASIQ 12.6 에서는 이상없이

수행하고, 12.5에서는 다르게...rollup 도 두가지이상 사용시에는

12.5 에서는 괄호없이 그냥 사용해야되고

12.6 에서는 괄호를 넣어서 사용해야되고 하는 문제가 있네요..

 

temporary table 도 마찬가지로 버전 때문에 발생하는 듯...

 

temporary table 을 사용해서 group by rollup Ownername, Tablename

사용하면.. rollup 이 작동을 안하고...

일반적인 #으로 만든 temp table 에 group by rollup Ownername, Tablename

사용하면.. rollup 이 잘 작동을 하고..

 

나중에 patch 시키면,,코드를 또 수정해서 컴파일해야 할 듯 합니다.

 

이상입니다.

 

 

홍님이 2005-10-19 10:40에 작성한 댓글입니다.
이 댓글은 2005-10-19 16:19에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1334data type에 관한 질문입니다. [5]
김은경
2005-10-18
4712
1333FROM절에 NOLOCK을 사용할 수 있는지요? [1]
김지수
2005-10-18
3675
1332도와주셈 [2]
초보
2005-10-18
3158
1331Temp Table 에서의 rollup 처리 오류??? [2]
2005-10-17
4488
1330join 문의 차이점 [1]
송효순
2005-10-17
4041
1329Library Painter가 나오지 않는 문제...
초보
2005-10-15
2993
1328제발 도와주세요... [1]
사이베이스허접
2005-10-15
4142
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다