none
Problema con decimal

    Pregunta

  • Hola comunidad, estoy armando un script (en el cual ya me ayudaron un poco por estos lados, y estoy muy agradecido)

    El problema es la sentencia que esta en negrita...

    select 
    t1.cod_art as [Articulo], 
    t1.descr as [Descripcion], 
    t1.sino as [Sinonimo], 
    t1.q_com as [Cantidad Comprada], 
    t1.importe_com as [Importe Total Comprado], 
    t1.q_ven as [Cantidad Vendida], 
    t1.importe_ven as [Importe Total Vendido], 
    CASE WHEN T1.IMPORTE_COM IS NULL
    THEN T1.IMPORTE_VEN
    ELSE (t1.importe_ven - t1.importe_com) 
    END as [Diferencia], 
    CASE 
    WHEN t1.q_com is not null and t1.importe_ven > 0
    THEN cast((t1.importe_ven - t1.importe_com) / t1.importe_ven as decimal(10,4))
    else '0'
    END as [Porcentaje] 
    from ctrlmg t1
    where 
    (t1.cod_art is not null) and t1.sino='TCISEA02PS'
    order by 1

    Si t1.importe_ven es 12975 y t1.importe_com es -4216

    el valor de Porcentaje tendria que ser 1,32... 

    pero cuando se hace la consulta el rdo es 1...

    Agradeceria su ayuda.

    Slds.

    miércoles, 8 de mayo de 2013 16:32

Respuestas

  • Ya probaste la sentencia que te propuse en ese post ? En ella realizo la conversión multiplicando el denominador por 1.0 y de esta manera lo conviertes a decimales,  era esta:

    Select 
    t1.cod_art as [Articulo], 
    t1.descr as [Descripcion], 
    t1.sino as [Sinonimo], 
    t1.q_com as [Cantidad Comprada], 
    t1.importe_com as [Importe Total Comprado], 
    t1.q_ven as [Cantidad Vendida], 
    t1.importe_ven as [Importe Total Vendido], 
    (t1.q_ven - t1.q_com) as [Diferencia] ,
    ((t1.q_ven - t1.q_com) / (t1.q_ven*1.0)) as [Porcentaje] 
    , CASE
    	WHEN ((t1.q_ven - t1.q_com) / (t1.q_ven*1.0)) >=20 THEN 'OK'
    	ELSE 'ERROR'
    END as Resultado
    from ctrlmg t1
    where t1.cod_art is not null
    order by Articulo

    Sergio Sánchez Arias
    AYÚDANOS A AYUDARTE

    • Marcado como respuesta Matias N. Amor jueves, 9 de mayo de 2013 12:46
    miércoles, 8 de mayo de 2013 16:36