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.

Preguntas similare

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.



Respuesta Responder a este mensaje
#2 Javier Romero
03/02/2005 - 20:02 | Informe spam
Alejandro, Muchas Gracias

Javier Romero

"Alejandro Mesa" escribió en el
mensaje news:
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.
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida