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