Si quieres unir dos tablas o dos vistas y emplear las columnas que existen en ambos objetos para emparejarlos, se puede hacerlo con un natural join. Aquí está un ejemplo que probé en Oracle 11.2:
SQL> desc v$sesstat
Name Null? Type
-------------------------- -------- ------------------
SID NUMBER
STATISTIC# NUMBER
VALUE NUMBER
SQL> desc v$statname
Name Null? Type
-------------------------- -------- ------------------
STATISTIC# NUMBER
NAME VARCHAR2(64)
CLASS NUMBER
STAT_ID NUMBER
SQL> select value/100 "CPU_Used"
2 from v$sesstat natural join v$statname
3 where sid = 101
4 and name = 'CPU used by this session'
5 /
CPU_Used
----------
40.07
SQL>
No se puede poner el nombre del objeto antes del nombre de la columna. Si lo haces, Oracle responde con un error ORA-25155:
SQL> select value/100 "CPU_Used"
2 from v$sesstat natural join v$statname
3 where sid = 101
4 and name = 'CPU used by this session'
5 and v$sesstat.statistic# = v$statname.statistic#
6 /
and v$sesstat.statistic# = v$statname.statistic#
*
ERROR at line 5:
ORA-25155: column used in NATURAL join cannot have
qualifier
SQL>
Tampoco se puede emplear un alias para el objeto en un natural join:
SQL> select value/100 "CPU_Used"
2 from v$sesstat a natural join v$statname b
3 where sid = 101
4 and name = 'CPU used by this session'
5 and a.statistic# = b.statistic#
6 /
and a.statistic# = b.statistic#
*
ERROR at line 5:
ORA-25155: column used in NATURAL join cannot have
qualifier
SQL>