Ayudita Transact SQL

Buenas tardes,

estoy intentando utilizar 2 campos calculados para extraer un tercero, pero no doy con ello. La consulta es la siguiente:

select
(Campo1*Campo2) as unoA,
(Campo3*Campo4) as UnoB,
UnoA*UnoB as Total
FROM resultados.

El error es el siguiente:

Msg 207, Level 16, State 1, Line 4
El nombre de columna 'unoA' no es válido.
Msg 207, Level 16, State 1, Line 4
El nombre de columna 'unoB' no es válido.

Alguna ayudita, por favor.
GRACIAS.
Al ser un campo calculado ese campo no existe en la tabla de origen por eso te dice que no hay ninguna columna con dicho nombre

select
(Campo1*Campo2) as unoA,
(Campo3*Campo4) as UnoB,
((Campo1*Campo2)*(Campo3*Campo4)) as Total
FROM resultados

Saludos!
kimba escribió:Al ser un campo calculado ese campo no existe en la tabla de origen por eso te dice que no hay ninguna columna con dicho nombre

select
(Campo1*Campo2) as unoA,
(Campo3*Campo4) as UnoB,
((Campo1*Campo2)*(Campo3*Campo4)) as Total
FROM resultados

Saludos!


Gracias Kimba. El problema es que el campo calculado es un CASE bastante complejo, y repetir toda la instrucción, hace que el código crezca desmesuradamente. No hay forma de hacer esto en transact sin tener que repetir la multiplicación entre los 2 campos originales?
select unoA * unoB as Total from (
select
(Campo1*Campo2) as unoA,
(Campo3*Campo4) as unoB
FROM resultados
)

Siento la subselect pero creo que no hay otra manera.
eoliTH escribió:select unoA * unoB as Total from (
select
(Campo1*Campo2) as unoA,
(Campo3*Campo4) as unoB
FROM resultados
)

Siento la subselect pero creo que no hay otra manera.


Muchas gracias eoliTH, con el subselect al menos no repito todo, un saludo.
4 respuestas