SQL은 참 재미있지만, 집합적인 사고가 쉽지만도 않은 것 같습니다.
DBA_DATA_FILES View에 tablespace_name 과 file_name 컬럼이 있습니다.
select tablespace_name, file_name from dba_data_files;
TABLESPACE_NAME |
FILE_NAME |
USERS |
E:\ORACLE11\ORADATA\USERS01.DBF |
UNDOTBS1 |
E:\ORACLE11\ORADATA\UNDOTBS01.DBF |
SYSAUX |
E:\ORACLE11\ORADATA\SYSAUX01.DBF |
SYSTEM |
E:\ORACLE11\ORADATA\SYSTEM01.DBF |
EXAMPLE |
E:\ORACLE11\ORADATA\EXAMPLE01.DBF |
EP_TSPACE |
E:\EP_TSPACE_01.DBF |
EP_TSPACE |
E:\EP_TSPACE_02.DBF |
EP_TSPACE |
E:\EP_TSPACE_03.DBF |
위 View에서 tablespace_name을 이용하여, ts_ tablespace_name_1.dbf 와 같이 가공하는 것 까지는 아래와 같이 작성을 했습니다.
select 'ts_'|| lower(tablespace_name)||'_'||rnum||'.dbf' as "dd_of"
-- , file_name
from ( select tablespace_name, count(*) cnt from dba_data_files group by tablespace_name ) a
, ( select rownum rnum from dba_objects where rownum < 100000 ) b
where b.rnum between 1 and a.cnt;
dd_of |
ts_undotbs1_1.dbf |
ts_sysaux_1.dbf |
ts_ep_tspace_1.dbf |
ts_ep_tspace_2.dbf |
ts_ep_tspace_3.dbf |
ts_users_1.dbf |
ts_system_1.dbf |
ts_example_1.dbf |
그런데 위 SQL에서 붉은색으로 Comment 표시된 File_Name 컬럼도 옆에 Result Set으로
나오게 하고 싶습니다. 아래와 같이요.
dd_of |
FILE_NAME |
ts_users_1.dbf |
E:\ORACLE11\ORADATA\USERS01.DBF |
ts_undotbs_1.dbf |
E:\ORACLE11\ORADATA\UNDOTBS01.DBF |
ts_sysaux_1.dbf |
E:\ORACLE11\ORADATA\SYSAUX01.DBF |
ts_system_1.dbf |
E:\ORACLE11\ORADATA\SYSTEM01.DBF |
ts_example_1.dbf |
E:\ORACLE11\ORADATA\EXAMPLE01.DBF |
ts_ep_tspace_1.dbf |
E:\EP_TSPACE_01.DBF |
ts_ep_tspace_2.dbf |
E:\EP_TSPACE_02.DBF |
ts_ep_tspace_3.dbf |
E:\EP_TSPACE_03.DBF |
group by인지라 file_name에 min이나 max 함수를 씌우면 원하는 결과가 않나오고, 좋은 방법이 없으까요? |