with student as(
select '001' s_id, '김개똥' s_nm FROM dual
UNION ALL SELECT '002', '이말똥' FROM dual
UNION ALL SELECT '003', '박소똥' FROM dual
UNION ALL SELECT '004', '강닭똥' FROM dual
)
,course as(
select '001' c_id, 'Database' c_nm FROM dual
UNION ALL SELECT '002','Java' FROM dual
)
,study as(
select '001' s_id, '001' c_id, 1 chasu FROM dual
UNION ALL SELECT '001','001',3 FROM dual
UNION ALL SELECT '001','002',2 FROM dual
UNION ALL SELECT '002','001',1 FROM dual
UNION ALL SELECT '002','001',2 FROM dual
UNION ALL SELECT '002','001',3 FROM dual
UNION ALL SELECT '003','002',1 FROM dual
UNION ALL SELECT '003','002',2 FROM dual
UNION ALL SELECT '004','001',1 FROM dual
)
select a.s_id,a.s_nm,a.c_nm,
min(decode(chasu,1,'O')) as "1차",
min(decode(chasu,2,'O')) as "2차",
min(decode(chasu,3,'O')) as "3차",
nvl(sum(decode(chasu,1,1)),0)+nvl(sum(decode(chasu,2,1)),0)+nvl(sum(decode(chasu,3,1)),0) as "참여횟수"
from (
select a.s_id,a.s_nm,b.c_id,b.c_nm
from student a, course b
group by a.s_id,a.s_nm,b.c_id,b.c_nm
) a, study c
where a.s_id = c.s_id(+)
and a.c_id = c.c_id(+)
group by a.s_id,a.s_nm,a.c_id,a.c_nm
order by a.s_id,a.c_id;
반응형
'아이티 > oracle&DB' 카테고리의 다른 글
오라클 (Oracle) 에서 소수점처리 어떻게 하지? (0) | 2011.12.28 |
---|---|
오라클함수 rank()와 dense_rank()의 차이점 (0) | 2011.11.18 |
오라클에서 Table 정보 및 Column정보 조회하기 / 데이터사전 (0) | 2011.11.17 |
msvcp71.dll msvcr71.dll 오류 해결법 (0) | 2011.04.13 |
[ORACLE/SQL] 함수 - 숫자함수 (0) | 2010.02.22 |
Java를 이용한 CLOB, BLOB 조작법 (0) | 2009.11.10 |
DataType 중 Blob을 아세요...??? (0) | 2009.11.10 |
oracle에서 access방법 (0) | 2009.09.29 |
랜덤하게 시리얼번호(serial number) 생성하기 (0) | 2009.02.13 |
시간간격을 년, 개월, 일수로 보기 (0) | 2009.02.13 |