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 41041 게시물 읽기
No. 41041
데이터를 1년 전체 표로 표현하기
작성자
김형우(lionkim)
작성일
2015-12-28 09:42ⓒ
2015-12-28 09:50ⓜ
조회수
9,045

안녕하세요.데이터를 표현하려고 하는데 막혀서요..

 

순번____이름____완료일

1________A____2015.05.04

2________B____2015.11.11

3________C____2015.12.06

4________D____2015.10.17

5________E____2015.03.28

6________F____2015.07.19

7________G____2015.01.21

...

 

 

위의 데이터를 아래 같이 1년을 표로 화면에(JSP) 표현하려고 하는데요,

 

__월______1______2______3______4______5______6______7______8______9______10______11______12

2

3

4_____________________________________A

5

6_________________________________________________________________________________________C

...

11________________________________________________________________________________B

12

13

14

15

16

17________________________________________________________________________D

18

19__________________________________________________F

20

21_______G

...

28______________________E

 

언더바(_)는 지금여기에 표현하려고 쓴거고요,

 

완료일 일을 기준으로 ROW 순서를 매기고

완료일 월을 기준으로 LEVEL을 매기면 될것 같은데 막상 잘 안되네요..

 

좋은 방법 있을까요?? 조언 부탁드립니다..^^

 

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

아래처럼 표현 가능합니다.(11g r2이상)

 
set pages 100
col jan_names format a5
col feb_names format a5
col mar_names format a5
col apr_names format a5
col may_names format a5
col jun_names format a5
col jul_names format a5
col aug_names format a5
col sep_names format a5
col oct_names format a5
col nov_names format a5
col dec_names format a5

with data as
(
  select 'A' as name, to_date('2015-05-01', 'yyyy-mm-dd') d from dual union all
  select 'B' as name, to_date('2015-05-01', 'yyyy-mm-dd') d from dual union all
  select 'C' as name, to_date('2015-08-25', 'yyyy-mm-dd') d from dual union all
  select 'D' as name, to_date('2015-11-02', 'yyyy-mm-dd') d from dual  
)
,
days
as
( 
  select level d from dual connect by level < 32
)
select * from 
(
	select 
		days.d day, data2.month, data2.name
	from 
	days
	left join
	(
	  select extract(month from d) month , extract(day from d) d, name
	  from data 
	) data2 on days.d = data2.d
) x
pivot 
(
	 listagg(name, ',') within group (order by name) as names
	 for ( month ) in ( 1 as jan,2 as feb,3 as mar,4 as apr,5 as may,6 as jun,7 as jul,8 as aug,9 as sep,10 as oct,11 as nov,12 as dec)
)
order by 1
/
 
 
       DAY JAN_N FEB_N MAR_N APR_N MAY_N JUN_N JUL_N AUG_N SEP_N OCT_N NOV_N DEC_N 
---------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
	 1			   A,B
	 2							       D
	 3
	 4
	 5
	 6
	 7
	 8
	 9
	10
	11
	12
	13
	14
	15
	16
	17
	18
	19
	20
	21
	22
	23
	24
	25					     C
	26
	27
	28
	29
	30
	31

 

고서진(longflat)님이 2015-12-29 08:20에 작성한 댓글입니다.
이 댓글은 2015-12-29 08:26에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41045테이블, 뷰의 속성 조회 [3]
정재봉
2016-01-06
8958
41044시간별 합산하려고 하는데요. [4]
mayse
2016-01-05
8697
41043PL/SQL Exception 관련. [6]
JHetfield
2016-01-04
9659
41041데이터를 1년 전체 표로 표현하기 [1]
김형우
2015-12-28
9045
41039쉼표로 옆으로 표현된 데이타를 세로로 표현하기 [1]
정재영
2015-12-24
9016
41038한 row로 쿼리 추출 방법? [1]
strider
2015-12-23
9058
41037초보 개발자 쿼리 질문 좀 드릴게요 [3]
황수영
2015-12-22
9300
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다