none
ayuda con un select RRS feed

  • Pregunta

  • junto con saludarlos me surgio la siguiente problematica trabajo con sqlserver tengo la siguiente sentencia

    SELECT           
      CONVERT(VARCHAR(11),T9.FE_ACTIVA,103) AS FE_ACTIVA,    
      CONVERT(VARCHAR(11),T9.FEC_FIN,103) AS FEC_FIN,   
      SEMANAS = CAST((SELECT DATEDIFF(WK, T6.FE_ACTIVA,GETDATE())    
          FROM MATRICULA_OLINE T6    
          WHERE T0.RUT_ALUM = T6.RUT_ALUM    
         AND T0.CURSO = T6.CURSO) AS CHAR(2)) + ' / ' + CAST((SELECT T8.NSEM    
                       FROM   OVIRTUAL_ALUMNOS T7 INNER JOIN    
                        M_CURSOS T8 ON T7.CURSO = T8.COD_CURSO    
                       WHERE  T0.RUT_ALUM = T7.RUT_ALUM    
                          AND T0.CURSO = T7.CURSO) AS CHAR(2)),  
        (SELECT( CAST(DATEDIFF(WK, T6.FE_ACTIVA,GETDATE()) AS FLOAT)/ T8.NSEM ) * 100   
          FROM MATRICULA_OLINE T6 INNER JOIN M_CURSOS T8 ON T0.CURSO = T8.COD_CURSO   
          WHERE T0.RUT_ALUM = T6.RUT_ALUM    
         AND T0.CURSO = T6.CURSO)  AS PROGRESS
    				    				
                             
    FROM                    
                          OVIRTUAL_ALUMNOS AS T0   
    INNER JOIN            ALUMNOS AS T1 ON T0.RUT_ALUM = T1.RUT_ALUM   
    INNER JOIN            MATRICULA_OLINE T9 ON T0.RUT_ALUM = T9.RUT_ALUM   
    LEFT OUTER JOIN       EMPRESAS AS T2 ON T0.RUT_EMPRESA = T2.RUT_EMPRESA    
    WHERE          
         --T0.VIGENTE = 'S'          
        T0.RUT_TUTOR = '2346543-0'  
    AND    T9.FEC_FIN >= GETDATE()        
    

    El Resultado de esa sentecia.

    Lo que trato de generar en la columna de progress no arroje con decimal.

    Saludos

    martes, 27 de diciembre de 2016 13:57

Respuestas

  • Hola.

    Puedes usar ROUND, que te redondeará hacia el entero más próximo o también puedes usar CONVERT o CAST.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    • Marcado como respuesta LatinWater martes, 27 de diciembre de 2016 14:31
    martes, 27 de diciembre de 2016 14:11
  • lo puede resolver utilizando Round

    Dejo la sentencia.

        ROUND((SELECT(CAST(DATEDIFF(WK, T6.FE_ACTIVA,GETDATE()) AS FLOAT)/ T8.NSEM ) * 100   
          FROM MATRICULA_OLINE T6 INNER JOIN M_CURSOS T8 ON T0.CURSO = T8.COD_CURSO   
          WHERE T0.RUT_ALUM = T6.RUT_ALUM    
         AND T0.CURSO = T6.CURSO),0)  AS PROGRESS,

    con eso me da el valor entero.

    Saludos

    LatinWater!

    • Marcado como respuesta LatinWater martes, 27 de diciembre de 2016 14:31
    martes, 27 de diciembre de 2016 14:31

Todas las respuestas

  • Hola.

    Puedes usar ROUND, que te redondeará hacia el entero más próximo o también puedes usar CONVERT o CAST.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    • Marcado como respuesta LatinWater martes, 27 de diciembre de 2016 14:31
    martes, 27 de diciembre de 2016 14:11
  • lo puede resolver utilizando Round

    Dejo la sentencia.

        ROUND((SELECT(CAST(DATEDIFF(WK, T6.FE_ACTIVA,GETDATE()) AS FLOAT)/ T8.NSEM ) * 100   
          FROM MATRICULA_OLINE T6 INNER JOIN M_CURSOS T8 ON T0.CURSO = T8.COD_CURSO   
          WHERE T0.RUT_ALUM = T6.RUT_ALUM    
         AND T0.CURSO = T6.CURSO),0)  AS PROGRESS,

    con eso me da el valor entero.

    Saludos

    LatinWater!

    • Marcado como respuesta LatinWater martes, 27 de diciembre de 2016 14:31
    martes, 27 de diciembre de 2016 14:31