2011-11-15 15 views
6

computarizada tengo una consulta como esta:uso del servidor SQL columna

select 
(price1 + price2 + price3) as total_price 
from prices 

¿Cómo puedo utilizar el total_price columna calculada para calcular otra totales de esta manera?

select 
(price1 + price2 + price3) as total_price, 
(price4 + total_price) as total_price2 
from prices  

¿Esto es posible?

+0

'¿Es esto posible?', ¿Lo has probado tú mismo? –

+1

Por supuesto que lo probé. Aparece un mensaje de "columna inválida total_precio". ¿Es posible lo que intento lograr? – Khronos

+4

No dentro de la misma consulta: el procesador de consultas no puede usar columnas de salida como columnas de entrada. Necesita escribir fórmulas cada vez o hacer una consulta interna, que calcula las columnas calculadas de primer nivel y luego seleccionar de esa consulta, calculando fórmulas de siguiente nivel. – Arvo

Respuesta

11

No, no es posible hacer referencia al alias de columna definido en el mismo nivel. Las expresiones que aparecen en la misma fase de procesamiento de consulta lógica son evaluated as if at the same point in time.

As Joe Celko says

cosas pasan "a la vez" en SQL, no "de izquierda a derecha", ya que serían en un modelo de lenguaje secuencial de archivos/de procedimiento

se puede definir en un CTE y luego reutilizarlo fuera del CTE sin embargo.

Ejemplo

WITH T 
    AS (SELECT (price1 + price2 + price3) AS total_price, 
       price4 
     FROM prices) 
SELECT total_price, 
     (price4 + total_price) AS total_price2 
FROM T 
1
select T.total_price, 
     P.price4 + T.total_price as total_price2 
from prices as P 
    cross apply (select P.price1 + P.price2 + P.price3) as T(total_price) 
3

me gustaría también consideramos un computed column sobre la mesa si esto se utiliza a menudo

ALTER TABLE prices ADD 
    total_price AS (price1 + price2 + price3) 

Luego, su consulta es

select 
    total_price, 
    (price4 + total_price) as total_price2 
from prices 

esta manera , puedes aplicar el D Principio RY ...

Cuestiones relacionadas