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 10107 게시물 읽기
No. 10107
crosstab에서 동적으로 2개를 뽑아내려하면 어떻게 해야되나요?
작성자
이태영(lty0225)
작성일
2019-10-04 17:12ⓒ
2019-10-06 16:53ⓜ
조회수
2,733

 예제도 거의 1개짜리가 많아서 잘 못하겠네요...

 매출, 작업명 뽑아내야되는데

 

이름     1월작업명 1월매출 2월작업명 2월매출 3월작업명  3월매출

홍길동  오늘a         3000     2월의작업  4000     2월의작업  4000 

 

그니까 매출만 뽑아내면 예제가 많이 있떤데 위처럼 2개(작업명, 매출)를 뽑는 에제는 못찾아서 잘안되네요... 

궁금합니다!

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

 그런 것을 cross table 또는 pivot 테이블이라고 합니다. 

그 쿼리 결과를 다시 테이블에 저장할 것이라면, 피봇 쿼리를 작성해야하고, 

그냥 text 파일로 저장할 것이라면, psql 내장 명령어 가운데, \crosstabview 명령어를 제공합니다. 

그것으로 처리할 수도 있습니다. 

 

쿼리인 경우는 각 월별 쿼리를 union all 로 묶고, 그것을 inline view로 사용해서 그 월별 만큼 셀프 조인을 해서 풉니다. 

자세한 것은 postgresql pivot 같은 검색어로 인터넷 검색 사이트에서 찾아보면 예제가 많습니다. 그것을 참조하세요.

 

김상기(ioseph)님이 2019-10-07 09:39에 작성한 댓글입니다.

SELECT 이름
     , MIN(CASE 월 WHEN '01' THEN 작업 END) 작업_01
     , SUM(CASE 월 WHEN '01' THEN 매출 END) 매출_01
     , MIN(CASE 월 WHEN '02' THEN 작업 END) 작업_02
     , SUM(CASE 월 WHEN '02' THEN 매출 END) 매출_02
     , MIN(CASE 월 WHEN '03' THEN 작업 END) 작업_03
     , SUM(CASE 월 WHEN '03' THEN 매출 END) 매출_03
  FROM t
 GROUP BY 이름
;

마농(manon94)님이 2019-10-08 08:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10111테이블이 삭제되었습니다.ㅜㅜ. 삭제 이력조회를 할수 있을까요?? [1]
일쌍다반사
2019-10-23
2764
1010912 버전 업그레이드 이야기 [3]
김상기
2019-10-13
2988
10108ctid 문의 [2]
임진승
2019-10-08
3254
10107crosstab에서 동적으로 2개를 뽑아내려하면 어떻게 해야되나요? [2]
이태영
2019-10-04
2733
10106CLIENT_ENCODING 영구적으로 UTF-8로하는방법 [1]
신규사용자
2019-09-30
2751
10105windows10에 postgresql 설치 후... [1]
전상도
2019-09-25
3292
10104우분투(Ubuntu) 리눅스에 PostgreSQL설치시 pgdata(data_directory)경로변경하여 설치하는 방법 문의 [1]
황동현
2019-09-04
2967
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다