Problemas con SUM

02/02/2005 - 21:56 por Javier Romero | Informe spam
Buenas Tardes:

Quiero usar una variable como parametro para la funcion agregada sum, pero
el motor me responde con el siguiente error

declare @tempSerafo varchar

select @tempSerafo = 'd_float29'

SELECT sum(@tempSerafo) FROM caf_data

Servidor: mensaje 409, nivel 16, estado 2, línea 3
La operación sum or average aggregate no puede usar el tipo de datos varchar
como argumento.

Muchas Gracias

J.R.
 

Leer las respuestas

#1 Alejandro Mesa
02/02/2005 - 22:07 | Informe spam
Javier,

Al parecer quieres pasar el nombre de la columna de forma dinamica, y para
eso debes generar la sentencia dinamicamente. SQL Server no tiene la
facilidad de macro sustitucion.

Aqui tienes un ejemplo:

use northwind
go

declare @cn sysname
declare @sql nvarchar(4000)

set @cn = N'quantity'
set @sql = N'select sum(' + @cn + N') from [order details]'

print @sql
execute sp_executesql @sql

set @cn = N'unitprice'
set @sql = N'select sum(' + @cn + N') from [order details]'

print @sql
execute sp_executesql @sql
go

Debes saber que cuando creas sentencias dinamicamente, las cuales debes
ejecutar usando EXEC o SP_EXECUTESQL, te expones a riesgos de seguridad y
otras cosas. Voy a adjuntar un link a una pagina, que aunque esta en ingles,
su contenido no se puede valorar en oro.

The Curse and Blessings of Dynamic SQL
http://www.sommarskog.se/dynamic_sql.html


AMB

"Javier Romero" wrote:

Buenas Tardes:

Quiero usar una variable como parametro para la funcion agregada sum, pero
el motor me responde con el siguiente error

declare @tempSerafo varchar

select @tempSerafo = 'd_float29'

SELECT sum(@tempSerafo) FROM caf_data

Servidor: mensaje 409, nivel 16, estado 2, línea 3
La operación sum or average aggregate no puede usar el tipo de datos varchar
como argumento.

Muchas Gracias

J.R.



Preguntas similares