declarar variable

25/05/2005 - 19:20 por Daniel | Informe spam
Tengo los siguientes datos:

tabla datos
ID A B C
1 100 200 300
2 110 500 100

tabla columnas
id columna
1 A
2 B
3 C

aqui declaro una variable llamada @col que me almacena los valores de A, B,
C, cada vez que ejecuto un WHILE BEGIN...END

set @col = (select columna from columnas where id = 1)
print '@col = '+@col
el resultado es
@col = A


quiero almacenar dinamicamente los valores de la tabla datos en una variable
llamda @var

set @var = (select @col from datos where id = 1)
print 'var = '+@var

el resultado que da es:
var = A

Pero el resultado que quiero es:
var = 100



Cualquier ayuda les agradezco!!!!

Preguntas similare

Leer las respuestas

#1 Maxi
26/05/2005 - 00:54 | Informe spam
Hola, la unica forma que tienes de hacer esto es usando sql-dinamico
(sp_executesql) pero deberas saber que no es un metodo muy recomendado :(




Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas
Msn:

Maxi.da[arroba]gmail.com

"Daniel" escribió en el mensaje
news:
Tengo los siguientes datos:

tabla datos
ID A B C
1 100 200 300
2 110 500 100

tabla columnas
id columna
1 A
2 B
3 C

aqui declaro una variable llamada @col que me almacena los valores de A,
B,
C, cada vez que ejecuto un WHILE BEGIN...END

set @col = (select columna from columnas where id = 1)
print '@col = '+@col
el resultado es
@col = A


quiero almacenar dinamicamente los valores de la tabla datos en una
variable
llamda @var

set @var = (select @col from datos where id = 1)
print 'var = '+@var

el resultado que da es:
var = A

Pero el resultado que quiero es:
var = 100



Cualquier ayuda les agradezco!!!!




Respuesta Responder a este mensaje
#2 Don Roque
26/05/2005 - 14:51 | Informe spam
Mira, en el caso particular que escribis, podes resolverlo usando un
CASE de la siguiente manera:

declare @columna char(1),
@valor int

select @columna = columna
from columnas
where id = [el ID que quieras]

select @valor case
when @columna = 'A' then A
when @columna = 'B' then B
when @columna = 'C' then C
else 0
end
from datos
where id = [el id que quieras obtener]

El tema es que seguramente, el caso productivo que necesitas resolver
es seguramente un poco mas complicado que este ejemplito. Seguramente
vas a poder escribir una sentencia similar a la que te pase.
Obviamente, este codigo no te va a servir si la estructura de la tabla
DATOS cambia constantemente con el uso del sistema que estes
desarrollando y terminarias cayendo en lo que bien dijo Maxi acerca del
SQL DINAMICO.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida