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 1071 게시물 읽기
No. 1071
검색건수가 2건일때 한건으로 나타나게 하고 싶은데 어떻게 해야할 까요?
작성자
김현철
작성일
2006-08-03 14:50ⓒ
2006-08-03 14:52ⓜ
조회수
7,813

TEMP: 회사인력관리 테이블

vcoid = '회사코드', VCOID VARCHAR(10) CCSID 933 NOT NULL

jcode ='직급' , 1: 대표이사, VARCHAR(4) CCSID 933 DEFAULT NULL

hname ='성명' , VARCHAR(20) CCSID 933 DEFAULT NULL

outdate = 퇴사일, OUTDATE VARCHAR(10) CCSID 933 DEFAULT NULL

 

< 원하는 답변 : 회사코드가 'TTTLIB' 이고 직급이 대표이사이고 퇴사일이 널인 사람들의 이름과 이메일을 가져오시오. >

 

실행할 쿼리 : select hname from TEMP where vcoid = 'TTTLIB' and jcode ='1'

and (outdate is null or outdate = '')
order by seq asc

 

실제 쿼리검색결과 : row 1 김봉순

row 2 김말자

 

원하는 결과 : row 1 김봉순/김말자

 

2건의 row를 1건으로 표기하고 싶은데요. 어떻게 해야할 지 막막하네요 ㅡ_ㅡ ;

부탁 드립니다.

 

 

 

 

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

최대 4개 까지 보여준다고 가정하고 했습니다. 

 

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.

도님이 2006-08-04 15:24에 작성한 댓글입니다. Edit

rownumber() over() 가 아예 안 먹는데 어떻게 하죠?

김현철님이 2006-08-07 12:01에 작성한 댓글입니다. Edit

DB version이 어떻게 되지요?  os390/400 은 olap function이 안되는것같던데요.

 

도님이 2006-08-08 11:54에 작성한 댓글입니다.
이 댓글은 2006-08-08 11:55에 마지막으로 수정되었습니다. Edit

AS400 / DB2 R8 을 씁니다 . AS400이라서 안 먹는건가요?

김현철님이 2006-08-08 14:20에 작성한 댓글입니다.
이 댓글은 2006-08-08 14:20에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1077[질문] EXCEPT ALL 랑 EXCEPT 차이를 모르겠습니다. [2]
이준식
2006-08-10
7932
1073DB2의 한글 크기 3바이트 [3]
윤세관
2006-08-08
14457
1072[질문] 이거 좀 이상하지 않나요? [3]
이준식
2006-08-04
7236
1071검색건수가 2건일때 한건으로 나타나게 하고 싶은데 어떻게 해야할 까요? [4]
김현철
2006-08-03
7813
1070insert, update시에 로그 안남게 하는 방법? [1]
이문선
2006-07-31
8353
1069[질문] 프로시저를 삭제하려고 해도 삭제가 안됩니다. [2]
이준식
2006-07-31
7839
1068[질문] 스토어드 프로시져 실행방법이 궁금합니다. [2]
이준식
2006-07-29
8393
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다