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
운영게시판
최근게시물
PostgreSQL Q&A 5164 게시물 읽기
No. 5164
세로 출력을 가로 출력으로 바꿀수 잇을까요?
작성자
초보자
작성일
2004-01-17 18:47
조회수
3,596

--------
Name
--------
aaaa
bbbb
cccc
dddd
--------

이 출력을 아래처럼 바꿀수 잇을까요? 조언 부탁드립니다.

--------------------------------
N1            N2          N3        N4    
--------------------------------
aaaa       bbbb     cccc     dddd
--------------------------------

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

이문제는 크로스테이블(cross table) 개념으로 푸는 것이 가장 합리적일 것 같습니다.

 

이 문제를 설명하기위해서는 자료구조를 약간 바꾸겠습니다. (그래야 설명이 가능하니까)

 

원천 자료는 다음과 같습니다.

 

mydb=# create table t (ymd date, ntype text, name text) without oids;
CREATE TABLE

mydb=# select * from t order by 1,2;
    ymd     | ntype | name
------------+-------+------
 2004-01-19 | N1    | aaaa
 2004-01-19 | N2    | bbbb
 2004-01-19 | N3    | cccc
 2004-01-19 | N4    | dddd
 2004-01-20 | N1    | eeee
 2004-01-20 | N2    | ffff
 2004-01-20 | N3    | gggg
 2004-01-20 | N4    | hhhh
(8 rows)

mydb=# select ymd,f1,f2,f3,f4
from crosstab('select * from t order by 1,2',4) 
as ct (ymd date, f1 text, f2 text, f3 text, f4 text);
    ymd     |  f1  |  f2  |  f3  |  f4
------------+------+------+------+------
 2004-01-19 | aaaa | bbbb | cccc | dddd
 2004-01-20 | eeee | ffff | gggg | hhhh
(2 rows)

 

이렇게 풀어가는 것이 가장 합리적이겠지요.

crosstable 기능을 사용하려면, contrib/tablefunc 모듈을 설치하셔야합니다. 또한 7.3.x 이상 버전에서만 가능합니다.

자세한 것은 소스 디렉토리 안에 있는 contrib/tablefunc/README.tablefunc 문서를 참조하세요. 비교적 자세히 설명된 문서니 도움이 많이 되실겝니다.

 

이 방법 말고는 7.3.x 이하 버전에서는 inline view 기능을 이용하셔야할터인데, 이 방법은 부득이, 마지 못해서 사용하는 방법이지 그리 권장할 만한 방법이 아닙니다.

 

 

김상기(ioseph)님이 2004-01-19 11:40에 작성한 댓글입니다.

상기님 감사합니다.

 

덕분에 많은 도움이 되었습니다. :-)

 

날추운데 감기 조심하시길.. :-)

초보자님이 2004-01-20 20:58에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5167한글처리를 위한 질문 입니다. [1]
박근준
2004-01-28
1582
5166리눅스에서 postgresql 7.2.3 rpm설치중에요.. [2]
유성옥
2004-01-28
1747
5165select.... where aaa=bbb(+) 무슨? [1]
정장실
2004-01-19
1633
5164세로 출력을 가로 출력으로 바꿀수 잇을까요? [2]
초보자
2004-01-17
3596
5163cpu 부하문제.. [3]
성치훈
2004-01-17
2218
51615432/faq <-- 여기에 쓰는거요... ^^ [1]
영미
2004-01-16
1321
5160pg에서 접속한 사용자를 보는 명령어는 뭔가요?? [2]
정~
2004-01-16
1829
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다