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 38725 게시물 읽기
No. 38725
출석부를 구현하고 싶습니다..ㅠ.ㅠ 도움 부탁드립니다.
작성자
공부하자
작성일
2011-07-21 16:49
조회수
4,809

제목과 같이 출석부를 한방 쿼리로 구현 하고 싶습니다.

 

한방 쿼리로 가능할까요??

 

우선 출석부 로그성 테이블 이 있습니다.

 

해당 테이블에는 학생아이디 / 출석일 (20110701) 로그가 들어 있습니다.

 

사용자(교사) 가 시작일 , 종료일 선택후 출석부 보기를 클릭하면..

 

날짜가 가로로 , 학생은 세로로 하여 아래와 같이 표현되게 하고 싶습니다.

 

쿼리로 가능할까요?? 많은 길라잡이 고수들께 고견을 부탁 드립니다.

 

이 글에 대한 댓글이 총 1건 있습니다.
행은 늘어날 수 있지만 열은 고정 입니다.
따라서 가변 열에 대한 고정 쿼리는 불가능합니다.
동적쿼리를 이용해 아래와 같은 형태로 자료를 뽑으셔야 합니다.

WITH t AS
(
SELECT '홍길동' nm, '20100720' dt FROM dual
UNION ALL SELECT '홍길동', '20100721' FROM dual
UNION ALL SELECT '홍길동', '20100722' FROM dual
UNION ALL SELECT '홍길동', '20100723' FROM dual
UNION ALL SELECT '홍길동', '20100724' FROM dual
UNION ALL SELECT '홍길동', '20100725' FROM dual
UNION ALL SELECT '송대관', '20100721' FROM dual
UNION ALL SELECT '송대관', '20100722' FROM dual
UNION ALL SELECT '송대관', '20100723' FROM dual
UNION ALL SELECT '송대관', '20100724' FROM dual
UNION ALL SELECT '송대관', '20100725' FROM dual
UNION ALL SELECT '이춘자', '20100720' FROM dual
UNION ALL SELECT '이춘자', '20100721' FROM dual
UNION ALL SELECT '이춘자', '20100723' FROM dual
UNION ALL SELECT '이춘자', '20100724' FROM dual
UNION ALL SELECT '배동성', '20100721' FROM dual
UNION ALL SELECT '배동성', '20100722' FROM dual
UNION ALL SELECT '배동성', '20100724' FROM dual
UNION ALL SELECT '배동성', '20100725' FROM dual
UNION ALL SELECT '이승엽', '20100720' FROM dual
UNION ALL SELECT '이승엽', '20100721' FROM dual
UNION ALL SELECT '이승엽', '20100722' FROM dual
UNION ALL SELECT '이승엽', '20100723' FROM dual
UNION ALL SELECT '이승엽', '20100724' FROM dual
UNION ALL SELECT '이승엽', '20100725' FROM dual
UNION ALL SELECT '최길동', '20100721' FROM dual
UNION ALL SELECT '최길동', '20100723' FROM dual
UNION ALL SELECT '최길동', '20100724' FROM dual
UNION ALL SELECT '최길동', '20100725' FROM dual
)
SELECT nm
     , NVL(MIN(DECODE(dt, '20100720', 'O')), 'X') "20100720"
     , NVL(MIN(DECODE(dt, '20100721', 'O')), 'X') "20100721"
     , NVL(MIN(DECODE(dt, '20100722', 'O')), 'X') "20100722"
     , NVL(MIN(DECODE(dt, '20100723', 'O')), 'X') "20100723"
     , NVL(MIN(DECODE(dt, '20100724', 'O')), 'X') "20100724"
     , NVL(MIN(DECODE(dt, '20100725', 'O')), 'X') "20100725"
  FROM t
 WHERE dt BETWEEN '20100720' AND '20100725'
 GROUP BY nm
;
마농(manon94)님이 2011-07-22 15:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38729동의어의 해석이 불가능합니다. [1]
레이첼
2011-07-22
4901
38727오라클 10g 설치 방법을 알고 싶습니다. [1]
김연오
2011-07-22
3690
38726오라클 이중 디비링크 질문 입니다. [2]
애로천사
2011-07-21
4567
38725출석부를 구현하고 싶습니다..ㅠ.ㅠ 도움 부탁드립니다. [1]
공부하자
2011-07-21
4809
38724목표값 찾기?? [5]
양승일
2011-07-21
4921
38723급하게 질문올립니다 디비접속시 ORA04031 에러와 디비 접속 불 [1]
신휘호
2011-07-21
4213
38722그룹 문의 [1]
레이첼
2011-07-20
3145
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다