Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Reutilizar alias en una consulta

Estas en el tema de Reutilizar alias en una consulta en el foro de SQL Server en Foros del Web. Amigos del foro, necesito realizar lo siguiente: Quiero reutilizar un alias definido para una columna en la columna que le sigue, es decir @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 19/11/2013, 06:35
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Reutilizar alias en una consulta

Amigos del foro, necesito realizar lo siguiente:

Quiero reutilizar un alias definido para una columna en la columna que le sigue, es decir

Código SQL:
Ver original
  1. SELECT col1 AS Alias1 , Alias1 * 2

Al ejecutar la query me retorna un error, diciendo que el Alias1 no es una columna válida.

La base de datos es Sql Server 2008.

Espero sus comentarios

Saludos

damimg
  #2 (permalink)  
Antiguo 19/11/2013, 08:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Reutilizar alias en una consulta

no puedes usar un alias en el mismo select al cual lo invocas ya que la columna en ese select no existe deberias de hacer lo siguiente:


select Alias1 * 2 from (
SELECT col1 AS Alias1 from tabla
) as t1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/11/2013, 10:53
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Reutilizar alias en una consulta

Otra opcion que me sirve cuando se trata de expreciones compuestas de muchos niveles es utilizar al Cross Apply:
Código SQL:
Ver original
  1. SELECT  object_id,
  2.         Alias1,
  3.         Alias2,
  4.         Alias3
  5. FROM    sys.objects
  6. CROSS Apply (SELECT object_id+1 AS Alias1) T1
  7. CROSS Apply (SELECT Alias1+2 AS Alias2) T2
  8. CROSS Apply (SELECT Alias2+3 AS Alias3) T3;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 19/11/2013, 13:32
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Reutilizar alias en una consulta

Cita:
Iniciado por Libras Ver Mensaje
no puedes usar un alias en el mismo select al cual lo invocas ya que la columna en ese select no existe deberias de hacer lo siguiente:


select Alias1 * 2 from (
SELECT col1 AS Alias1 from tabla
) as t1
Gracias Libras
  #5 (permalink)  
Antiguo 19/11/2013, 13:38
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Reutilizar alias en una consulta

Cita:
Iniciado por GeriReshef Ver Mensaje
Otra opcion que me sirve cuando se trata de expreciones compuestas de muchos niveles es utilizar al Cross Apply:
Código SQL:
Ver original
  1. SELECT  object_id,
  2.         Alias1,
  3.         Alias2,
  4.         Alias3
  5. FROM    sys.objects
  6. CROSS Apply (SELECT object_id+1 AS Alias1) T1
  7. CROSS Apply (SELECT Alias1+2 AS Alias2) T2
  8. CROSS Apply (SELECT Alias2+3 AS Alias3) T3;
Gracias por tu rta GeriReshef, podrias darme una breve explicación de la sentencia Cross Apply y que beneficio me otorga en la query que definis?

Saludos

damimg
  #6 (permalink)  
Antiguo 19/11/2013, 15:06
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Reutilizar alias en una consulta

Damimg - el Alias1 esta creado en el primer Cross Apply, y se puede utilizarlo en el Select y en el segundo Cross Apply.

En la misma manera - el Alias2 puede ser utilizado en el Select y en el tercer Cross Apply, etc.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: alias, select, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:39.