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
 

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

Preguntas similares