none
Formatação Casas decimais RRS feed

  • Pergunta

  • Bom dia

    Amigos!

    Poderia ajudar? tenho a consulta abaixo e preciso formatar o resultado da coluna ppm para somente duas casas decimais

       With CTE_PDF As
    (
    		SELECT 
    			O.MotOcorCodEstr,  
    			M.MotOcorDescr, 
    			COUNT(O.MotOcorCodEstr) AS QTD, 
    			IOC.ProdCodEstr,
    			SP.SubGrpProdNome
    				       
    		FROM  OCORRENCIA O WITH(NOLOCK), MOTIVO_OCOR M WITH(NOLOCK), ITEM_OCOR IOC  WITH(NOLOCK), PRODUTO P  WITH(NOLOCK)
    		LEFT JOIN PROD_GRUPO_SUBGRUPO PGS WITH(NOLOCK) ON  PGS.ProdCodEstr = P.ProdCodEstr
    		LEFT JOIN GRUPO_PROD GP WITH(NOLOCK) ON PGS.GrpProdCod = GP.GrpProdCod
    		LEFT JOIN SUBGRUPO_PROD SP WITH(NOLOCK) ON PGS.SubGrpProdCod = SP.SubGrpProdCod
    		WHERE
    			O.MotOcorCodEstr = M.MotOcorCodEstr   			
    		AND ( O.OcorData)>= DATEADD(YEAR, -1, GETDATE())
    		AND ( O.OcorData) <= GETDATE()		
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.1%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.2%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.3%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.4%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.5%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.6%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.7%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.8%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.9%'
    		AND M.MotOcorCodEstr  NOT LIKE '01.02.10%'
    		AND M.MotOcorCodEstr  LIKE '01.02%'
    		AND O.EmpCod = '1'
    		AND O.OcorCod = IOC.OcorCod
    		AND IOC.ProdCodEstr = P.ProdCodEstr
    		
    		GROUP BY  O.MotOcorCodEstr,  M.MotOcorDescr, IOC.ProdCodEstr, SP.SubGrpProdNome
    )
    
    
    	SELECT 			
    		   PDF.MotOcorCodEstr AS 'CodMotOcorr',
    		   PDF.MotOcorDescr AS 'DescMotivo',
    		   SUM(QTD) AS 'QtdOcorr',
    		   PDF.SubGrpProdNome AS 'SubGrupo',
    		   
    			
    		  'QtdVendida' = (SELECT   SUM(CONVERT(DECIMAL(38),IME.ItMovEstqQtdProd))   
    			              FROM     MOV_ESTQ ME WITH(NOLOCK), 
    							       ITEM_MOV_ESTQ IME WITH(NOLOCK),    
    							       PRODUTO P WITH(NOLOCK),   
                                       PROD_GRUPO_SUBGRUPO PGS WITH(NOLOCK) ,
                                       SUBGRUPO_PROD SP WITH(NOLOCK)   
                                       
                              WHERE  (ME.TipoLancCod = 'E0000296')                                                                                 
    							AND ( ME.MovEstqDataMovimento) >= DATEADD(YEAR, -1, GETDATE())
    						    AND ( ME.MovEstqDataMovimento) <= GETDATE()
                                AND (IME.EmpCod = 1)  
                                AND  ME.EmpCod = IME.EmpCod  
                                AND  ME.MovEstqChv = IME.MovEstqChv    
                                AND  IME.ProdCodEstr = P.ProdCodEstr  
                                AND  ME.MovEstq = 'Sim'  
                                AND  IME.ProdCodEstr >='10.00.0000'  
                                AND  IME.ProdCodEstr <='10.99.9999'  
                                AND  PGS.ProdCodEstr  = P.ProdCodEstr
                                AND  IME.ProdCodEstr =  PGS.ProdCodEstr        
                                AND  SP.SubGrpProdCod = PGS.SubGrpProdCod
                                AND  PDF.SubGrpProdNome = SP.SubGrpProdNome ),
    
    
    							
    		  'ppm' = (SUM (PDF.QTD) /  (SELECT   SUM(CONVERT(DECIMAL(10,2),IME.ItMovEstqQtdProd))   
    			              FROM     MOV_ESTQ ME WITH(NOLOCK), 
    							       ITEM_MOV_ESTQ IME WITH(NOLOCK),    
    							       PRODUTO P WITH(NOLOCK),   
                                       PROD_GRUPO_SUBGRUPO PGS WITH(NOLOCK) ,
                                       SUBGRUPO_PROD SP WITH(NOLOCK)   
                                       
                              WHERE  (ME.TipoLancCod = 'E0000296')                                                                                 
    							AND ( ME.MovEstqDataMovimento) >= DATEADD(YEAR, -1, GETDATE())
    						    AND ( ME.MovEstqDataMovimento) <= GETDATE()
                                AND (IME.EmpCod = 1)  
                                AND  ME.EmpCod = IME.EmpCod  
                                AND  ME.MovEstqChv = IME.MovEstqChv    
                                AND  IME.ProdCodEstr = P.ProdCodEstr  
                                AND  ME.MovEstq = 'Sim'  
                                AND  IME.ProdCodEstr >='10.00.0000'  
                                AND  IME.ProdCodEstr <='10.99.9999'  
                                AND  PGS.ProdCodEstr  = P.ProdCodEstr
                                AND  IME.ProdCodEstr =  PGS.ProdCodEstr        
                                AND  SP.SubGrpProdCod = PGS.SubGrpProdCod
                                AND  PDF.SubGrpProdNome = SP.SubGrpProdNome )* 1000000)
    							
    														     					
       
    	FROM CTE_PDF As PDF
    
    	GROUP BY PDF.MotOcorCodEstr ,  PDF.SubGrpProdNome, PDF.MotOcorDescr
    	
    	HAVING  SUM(QTD)>=12
    	ORDER BY QtdOcorr DESC

    segunda-feira, 30 de janeiro de 2023 10:52

Respostas

  • Leandro Massena, bom dia!

    Existe a função ROUND sua sintaxe está no link https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16.

    Mas segue alguns exemplos.

    SELECT 
    	 1290.99751212412          AS 'V_ORIGINAL'
    	,ROUND(1290.99751212412,-2) AS 'V_ARRED_N2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_4 '
    	,ROUND(1290.99751212412,0,1) AS 'V_ARRED_4 '
    

    Resultado




    Abraços.


    quarta-feira, 1 de fevereiro de 2023 10:42

Todas as Respostas

  • Olá Leandro,

    Obrigado por usar os fóruns do MSDN.

    Recebemos o seu inquérito e juntamente com a comunidade esperamos encontrar uma solução para o seu problema e/ou dúvida. 

    Se você tiver informações adicionais que possam nos ajudar a resolver o problema, poderá adicioná-las para acelerar o tempo de resposta.

    Pablo Garcia
    ____________________________

    Por favor, lembre-se de marcar "PROPOR COMO RESPOSTA" para respostas que resolveram seu problema, é uma maneira comum de reconhecer aqueles que ajudaram e torna mais fácil para outros visitantes encontrarem a solução mais tarde.
    terça-feira, 31 de janeiro de 2023 16:26
  • Leandro Massena, bom dia!

    Existe a função ROUND sua sintaxe está no link https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16.

    Mas segue alguns exemplos.

    SELECT 
    	 1290.99751212412          AS 'V_ORIGINAL'
    	,ROUND(1290.99751212412,-2) AS 'V_ARRED_N2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_4 '
    	,ROUND(1290.99751212412,0,1) AS 'V_ARRED_4 '
    

    Resultado




    Abraços.


    quarta-feira, 1 de fevereiro de 2023 10:42
  • Leandro Massena, bom dia!

    Existe a função ROUND sua sintaxe está no link https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16.

    Mas segue alguns exemplos.

    SELECT 
    	 1290.99751212412          AS 'V_ORIGINAL'
    	,ROUND(1290.99751212412,-2) AS 'V_ARRED_N2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_2'	
    	,ROUND(1290.99751212412,2) AS 'V_ARRED_4 '
    	,ROUND(1290.99751212412,0,1) AS 'V_ARRED_4 '

    Resultado




    Abraços.


    Leandro,

    Em alguns casos, você pode utilizar as funções Ceiling() e Floor().


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional | Data Warehouse | Data Mining | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.com.br]

    sexta-feira, 3 de fevereiro de 2023 22:13