2016-10-25 40 views
0

我正在使用以下命令獲取單個行輸出,並且我的要求是將第一列作爲DB NAME,後跟下面的選定列。我如何實現它?

select SESSION_KEY, INPUT_TYPE, STATUS, 
    to_char(START_TIME,'mm/dd/yy hh24:mi') start_time, 
    to_char(END_TIME,'mm/dd/yy hh24:mi') end_time, 
    TIME_TAKEN_DISPLAY 
from V$RMAN_BACKUP_JOB_DETAILS 
where INPUT_TYPE like '%DB%' 
and start_time = (select max(start_time) from V$RMAN_BACKUP_JOB_DETAILS); 

回答

1

您可以通過連接到v$database得到數據庫的名稱,例如:

select d.name, rbjd.session_key, rbjd.input_type, status, 
    to_char(rbjd.start_time,'mm/dd/yy hh24:mi') start_time, 
    to_char(rbjd.end_time,'mm/dd/yy hh24:mi') end_time, 
    rbjd.time_taken_display 
from v$database d 
cross join v$rman_backup_job_details rbjd 
where rbjd.input_type like '%DB%' 
and rbjd.start_time = (select max(start_time) from v$rman_backup_job_details); 

或者使用子查詢,如果你不喜歡的交叉連接,但我不是一個大風扇子選擇列表中的子查詢。還有其他方法可以獲得最新的行。

0

這也可以使用,因爲總是V $ RMAN_BACKUP_JOB_DETAILS輸出將是單行(根據上面給出的查詢)。

select name,SESSION_KEY, INPUT_TYPE, STATUS, 
    to_char(START_TIME,'mm/dd/yy hh24:mi') start_time, 
    to_char(END_TIME,'mm/dd/yy hh24:mi') end_time, 
    TIME_TAKEN_DISPLAY 
from V$RMAN_BACKUP_JOB_DETAILS,v$database 
where INPUT_TYPE like '%DB%' 
and start_time = (select max(start_time) from V$RMAN_BACKUP_JOB_DETAILS) 
相關問題