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 に答える