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
운영게시판
최근게시물
DB2 Q&A 1250 게시물 읽기
No. 1250
이런쿼리도 가능한지 궁금합니다.
작성자
하울
작성일
2007-02-02 17:58
조회수
8,698

A table의 데이타가 다음과 같이 있습니다.

Source table
doKey Data1 Data2 Data3 TYPE
0001 A B C 999
0001 D E F 888
0002 G H I 888
0002 J K L 999


이렇게 구성된 테이블은 doKey와 TYPE이 복합키로 설정되어 있습니다.

이런 테이블 데이타를 아래와 같이 변경하고 싶습니다.

Com table
doKey Data1 Data2 Data3 TYPE
0001 A,D B,E C,F 999,888
0002 G,J H,K I,L 888,999

와 같이 데이터를 [,]를 통해 구분하고 싶습니다.

즉 복합키로 설정되어 나타난 데이터를 A,D 와같이 Type순으로 한 데이터 칼럼으로 만들고 싶은데요

이렇게 변형할 수가 있는건지 궁금합니다.

Source Table을 데이터 반입할때 Com테이블처럼 반입을 하는것이 가장 좋겠지만 이미 구축된 데이터가 Source Table이고 또한 저희가 관리하는 데이터가 아닌지라 부득이하게 이렇게 변경하려 하는데 가능한지 궁금합니다.

그럼 좋은 주말 보내세요








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

export 를 받으실때 sql 문으로 원하는 형태의 데이터를 만들어 주시면 됩니다. 

export to s.ixf of ixf select * from st where ~~~;
import from s.ixf of ixf commitcount 10000 replace_create into com;

원하시는 답변인지 모르겠네요. 


아래는 예제입니다.

create table t1(c1 integer, c2 char(5))
insert into t1 values (1,'a'),(1,'b'),(1,'c'), (2,'a'),(2,'b'),(2,'c'),(2,'d'), (3,'a'),(3,'b')

select * from t1

C1          C2  
----------- -----
          1 a   
          1 b   
          1 c   
          2 a   
          2 b   
          2 c   
          2 d   
          3 a   
          3 b   

  9 record(s) selected.


select c1,c2,rownumber() over(partition by c1) rn, max(rownumber() over(partition by c1)) over(partition by c1) max from t1

C1          C2    RN                   MAX                
----------- ----- -------------------- --------------------
          1 a                        1                    3
          1 b                        2                    3
          1 c                        3                    3
          2 a                        1                    4
          2 b                        2                    4
          2 c                        3                    4
          2 d                        4                    4
          3 a                        1                    2
          3 b                        2                    2

  9 record(s) selected.


select c1,max(value(case when rn = max-3 then c2 end,''))||

              max(value(case when rn = max-2 then c2 end,''))||

              max(value(case when rn = max-1 then c2 end,''))||

             max(value(case when rn = max-0 then c2 end,''))

from ( select c1,c2,rownumber() over(partition by c1) rn, max(rownumber() over(partition by c1)) over(partition by c1) max from t1 where c1=1 ) a group by c1

C1          2                  
----------- --------------------
          1 a    b    c        

  1 record(s) selected.

마라도님이 2007-02-05 10:32에 작성한 댓글입니다.
이 댓글은 2007-02-05 10:35에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1253File을 odbc 시스템 DNS으로 등록해서 사용가능한지요?
배성수
2007-02-06
7555
1252사용중인 DB의 코드페이지 변경이 가능한가요? [2]
팝씨
2007-02-05
7382
1251backup pending이 걸리는 상황은..? [3]
윤형석
2007-02-05
7840
1250이런쿼리도 가능한지 궁금합니다. [1]
하울
2007-02-02
8698
1249테이블 및 컬럼, 인덱스 정보 확인하는 방법좀요. [1]
튼솔
2007-01-31
8879
1248[질문] 옵티마이저모드에 대해서 질문입니다. [1]
김경호
2007-01-29
7515
1247급해요 ㅠㅠ DB2 SQL 에러 -305 [2]
cheese
2007-01-29
7899
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다