error consulta sql

06/09/2007 - 11:29 por Oscar | Informe spam
Hola

Tengo la siguiente consulta que simpre me ha funcionado, ahora de repente,
al parecer porque debe haber algún dato erroneo me da el siguiente error:

"Syntax error converting the varchar value '1,85' to a column of data type
int"

La consulta sql es la siguiente:

SELECT CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) AS Expr1,
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_E_S, dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_C_P_A, dbo.ALM_MOVIMIENTOS.ALMMOV_FECHA,
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO
FROM dbo.ALM_MOVIMIENTOS INNER JOIN dbo.ALM_MOVIMIENTOS_ANALITICA ON
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_CODIGO AND
dbo.ALM_MOVIMIENTOS.ALMMOV_LINEA =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_LINEA
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE
WHERE ...

El error esta en la parte de la sentencia
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE

Ya que cuando la quito no da el error.
Los campos neto, cantidad e importe son del tipo decimal(18,2), hago el cast
porque cuando multuplico la cantidad por el neto me salen más de 4 decimales
y quiero a aproximarlo a 2 para que la sentencia me de el resultado que
busco.

Saludos, Oscar

Preguntas similare

Leer las respuestas

#1 Maxi
06/09/2007 - 14:31 | Informe spam
Oscar, un detalle, para SQL la separacion de decimal es punto y no coma, en
ese dato "1,85" justamente no estaria bien, revisa eso


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Oscar" escribió en el mensaje
news:
Hola

Tengo la siguiente consulta que simpre me ha funcionado, ahora de repente,
al parecer porque debe haber algún dato erroneo me da el siguiente error:

"Syntax error converting the varchar value '1,85' to a column of data type
int"

La consulta sql es la siguiente:

SELECT CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) AS Expr1,
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_E_S, dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_C_P_A, dbo.ALM_MOVIMIENTOS.ALMMOV_FECHA,
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO
FROM dbo.ALM_MOVIMIENTOS INNER JOIN dbo.ALM_MOVIMIENTOS_ANALITICA ON
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_CODIGO AND
dbo.ALM_MOVIMIENTOS.ALMMOV_LINEA =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_LINEA
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE
WHERE ...

El error esta en la parte de la sentencia
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE

Ya que cuando la quito no da el error.
Los campos neto, cantidad e importe son del tipo decimal(18,2), hago el
cast porque cuando multuplico la cantidad por el neto me salen más de 4
decimales y quiero a aproximarlo a 2 para que la sentencia me de el
resultado que busco.

Saludos, Oscar

Respuesta Responder a este mensaje
#2 Gustavo Larriera (MVP)
06/09/2007 - 16:16 | Informe spam
El error es bien claro. No puede convertir un valor 1,85 (o 1.85) a formato
integer, pues el tipo de datos integer no admite digitos decimales.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Oscar" wrote:

Hola

Tengo la siguiente consulta que simpre me ha funcionado, ahora de repente,
al parecer porque debe haber algún dato erroneo me da el siguiente error:

"Syntax error converting the varchar value '1,85' to a column of data type
int"

La consulta sql es la siguiente:

SELECT CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) AS Expr1,
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_E_S, dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO,
dbo.ALM_MOVIMIENTOS.ALMMOV_TIPO_C_P_A, dbo.ALM_MOVIMIENTOS.ALMMOV_FECHA,
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO
FROM dbo.ALM_MOVIMIENTOS INNER JOIN dbo.ALM_MOVIMIENTOS_ANALITICA ON
dbo.ALM_MOVIMIENTOS.ALMMOV_CODIGO =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_CODIGO AND
dbo.ALM_MOVIMIENTOS.ALMMOV_LINEA =
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_LINEA
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE
WHERE ...

El error esta en la parte de la sentencia
AND CAST(dbo.ALM_MOVIMIENTOS.ALMMOV_CANTIDAD *
dbo.ALM_MOVIMIENTOS.ALMMOV_NETO AS DECIMAL(18, 2)) <>
dbo.ALM_MOVIMIENTOS_ANALITICA.ALMMOVANL_IMPORTE

Ya que cuando la quito no da el error.
Los campos neto, cantidad e importe son del tipo decimal(18,2), hago el cast
porque cuando multuplico la cantidad por el neto me salen más de 4 decimales
y quiero a aproximarlo a 2 para que la sentencia me de el resultado que
busco.

Saludos, Oscar



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida