Duda SQL Dinámico

Expertos buenos días, estoy intentando una consulta probando el funcionamiento de SQL Dinámico en SQL Server 2005, tratando de tomar desde variables el nombre de un par de columnas y definiendo una tercera desde la cual la consulta tome su valor... Lo de los nombres de columna lo logro bien, pero llevar el valor de la otra variable no he podido hacerlo. Envío el código para ver si me hago entender
DECLARE @col1 AS NVARCHAR(500),@col2 AS NVARCHAR(500), @SI AS NVARCHAR(500)
SET @col1= 'A1.U_OPERACION1'
SET @col2= 'A1.U_EJECOPER1'
SET @SI= 'SI'
SET @QUERY =
('
    SELECT '+@col1+', '+@col2+' @SI
    FROM OSCL A0
    inner join oclg a1 on a0.callid = a1.parentid
')
exec(@query)
Espero que me puedan ayudar.

1 respuesta

Respuesta
1
No entdendí bien lo que quieres hacer con el @SI pero veamos lo que estas concatenando:
SET @QUERY = 
(' 
    SELECT '+@col1+', '+@col2+' @SI 
    FROM OSCL A0 
    INNER JOIN OCLG A1 ON A0.CALLID = A1.PARENTID 
')
lo que la variable @QUERY guarda es algo asi:
SELECT COLUMNA1, COLUMNA2SI
FROM OSCL A0
INNER JOIN OCLG A1 ON A0.ALLID = A1. PARENTID
por lo que el select es incorrecto, me imagino que el @SI es para realizar un filtrado, entonces la construccion de tu Query deberia quedar algo asi:
SET @QUERY = 
(' 
    SELECT '+@col1+', '+@col2+
   'FROM OSCL A0 
WHERE A0.COLUMNAFILTRO =' + @SI+
INNER JOIN OCLG A1 ON A0.CALLID = A1.PARENTID
')

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas