son que modificar los especificacion computado computada columnas columna campos campo calculados calculado calculada sql oracle

sql - que - Cómo usar una columna calculada para calcular otra columna en la misma vista



sql especificacion de columna calculada (3)

Debes incluir la expresión para tu columna calculada:

SELECT ColumnA, ColumnB, ColumnA + ColumnB AS calccolumn1 (ColumnA + ColumnB) / ColumnC AS calccolumn2

Espero que puedas ayudar con esta pregunta. Estoy usando Oracle SQL (Desarrollador de SQL para esta vista) ...

Si tengo una tabla con las siguientes columnas:

  • Columna A (Número)
  • Columna B (Número)
  • ColumnC (Número)

En mi opinión, tengo

Select ColumnA, ColumnB, ColumnA + ColumnB As calccolumn1

Ahora en este punto, quiero usar calccolumn1 pero no puedo decir ...

Select ColumnA, ColumnB, ColumnA + ColumnB As calccolumn1 calccolumn1 / ColumnC as calccolumn2

Supongo que necesito algún tipo de subconsulta ... pero aquí es donde necesito tu ayuda ... ¿Cómo correlacionaría la consulta para poder usar calccolumn1 en otro cálculo dentro de la misma consulta? Podría ser un If entonces o un Case when, pero bottomline es un número derivado.


Puede usar una consulta anidada:

Select ColumnA, ColumnB, calccolumn1, calccolumn1 / ColumnC as calccolumn2 From ( Select ColumnA, ColumnB, ColumnC, ColumnA + ColumnB As calccolumn1 from t42 );

Con una fila con los valores 3 , 4 , 5 que da:

COLUMNA COLUMNB CALCCOLUMN1 CALCCOLUMN2 ---------- ---------- ----------- ----------- 3 4 7 1.4

También puede simplemente repetir el primer cálculo, a menos que realmente esté haciendo algo caro (a través de una llamada a función, digamos):

Select ColumnA, ColumnB, ColumnA + ColumnB As calccolumn1, (ColumnA + ColumnB) / ColumnC As calccolumn2 from t42; COLUMNA COLUMNB CALCCOLUMN1 CALCCOLUMN2 ---------- ---------- ----------- ----------- 3 4 7 1.4


Puedes hacer esto usando cross join

Select ColumnA, ColumnB, c.calccolumn1 As calccolumn1, c.calccolumn1 / ColumnC As calccolumn2 from t42 cross join (select (ColumnA + ColumnB) as calccolumn1) as c