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);
4

2 回答 2

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);

如果您不喜欢交叉连接,或者使用子查询,但我不喜欢选择列表中的子查询。还有其他方法可以获取最新的行。

于 2016-10-25T18:40:39.973 回答
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)
于 2016-11-16T11:42:02.610 回答