Colocar nombre a columna segun una variable

21/06/2007 - 20:59 por Matias | Informe spam
Hola estimados, el tema es que en un select quiero colocar el nombre a
columna segun el contenido de una variable.

Tengo una tabla que siempre tiene un solo registro, entonces lo paso a una
variable:

DECLARE @nom CHAR(4)
SET @nom = (SELECT CASE col_1
WHEN 'S' THEN 'Nombre_1'
WHEN 'M' THEN 'Nombre_2'
END FROM tabla_param)

Luego para un select tengo que utilizar ese nombre para una columna, ej:

Select pepe as @nom from mi_tabla

Obiamente que esto me da error, hay alguna forma de solucionar sin cursores
o tablas temporales?

Deberia quedar algo asi, suponiendo que el dato de tabla_param es M:

Nombre_2

Dato1
Dato2
DatoX

Gracias por su valioso tiempo.
 

Leer las respuestas

#1 Federico A Colli
21/06/2007 - 21:10 | Informe spam
Hola, si el select (que usa dicho campo) no es muy complicado porque no usas
un CASE para hacer un select u otro (o varios en caso de que el nombre de la
columna sea variable), dependiendo el campo que encesites en cada caso? de
todas formas el campo a agregar en el select depende de la estructura de la
tabla, por lo tanto no será demasiado variable.

Otra alternativa es usar sql dinamico, pero antes que este personalmente
prefiero la otra alternativa.

Saludos
Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Matias" escribió en el mensaje
news:
Hola estimados, el tema es que en un select quiero colocar el nombre a
columna segun el contenido de una variable.

Tengo una tabla que siempre tiene un solo registro, entonces lo paso a una
variable:

DECLARE @nom CHAR(4)
SET @nom = (SELECT CASE col_1
WHEN 'S' THEN 'Nombre_1'
WHEN 'M' THEN 'Nombre_2'
END FROM tabla_param)

Luego para un select tengo que utilizar ese nombre para una columna, ej:

Select pepe as @nom from mi_tabla

Obiamente que esto me da error, hay alguna forma de solucionar sin
cursores o tablas temporales?

Deberia quedar algo asi, suponiendo que el dato de tabla_param es M:

Nombre_2

Dato1
Dato2
DatoX

Gracias por su valioso tiempo.



Preguntas similares