Quitar decimales a campo money sql server

publicado por: Anonymous

Buenas tengo un problema necesito quitar los decimales de un campo sin perder los
puntos de los miles, la consulta que hago es la siguiente

('$' + CONVERT(VARCHAR, CONVERT(VARCHAR, CAST(OTGRMR.[mny_ValorUnitarioRP_GRMR]  AS MONEY),1))) AS VALORUNITARIO

y me devuelve DE 1327.96 = $1.327.96

Pero no necesito los decimales es para un reporte en jasper y el cliente no los quiere ahí

Entonces para quitarlos hago la consulta asi

('$' + CONVERT(VARCHAR, CONVERT(VARCHAR, CAST(OTGRMR.[mny_ValorUnitarioRP_GRMR]  AS NUMERIC),0))) AS VALORUNITARIO

Y me devuelve de 1327.96 = $1328
peo pierdo los “.” de los miles y el cliente los quiere adicional el reporte se ve mal sin ellos

Como puedo quitar los decimales sin perder los miles, o quitar los decimales manteniendo el campo tipo money.

Agradezco su ayuda

solución

Lo que buscas es “Truncar” los decimales, pero quitar estos. Hay dos formas de hacerlo y ambas son “peligrosas” por sus propias limitaciones:

  • Convertir a varchar y truncar la cadena: pierdes la naturaleza numérica del dato
  • Redondear truncando los decimales y convirtiendo a INT: pierdes la capacidad de soportar números grandes, el máximo es de 2,147,483,647, eventualmente podrías convertir a BIGINT, pero eso seguramente te traerá otros problemas.

Ejemplo:

DECLARE @Valor MONEY = 1327.96
SELECT  @Valor          'Original',
    CONVERT(INT, ROUND(@Valor,0,1)) 'Truncado a INT',
    LEFT(CONVERT(VARCHAR, @Valor*100), LEN(@Valor) - 3) 'Truncado a VARCHAR'


             Original Truncado a INT Truncado a VARCHAR
--------------------- -------------- ------------------------------
              1327,96           1327 1327

PD: Como consejo adicional, a menos que sea imposible resolverlo, dejá este trabajo para la capa de visualización

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *