Usuário com melhor resposta
Formatação Casas decimais

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
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.- Editado Luis Gustavo Gomes quarta-feira, 1 de fevereiro de 2023 10:44 Erro
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 2 de fevereiro de 2023 14:46
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. -
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.- Editado Luis Gustavo Gomes quarta-feira, 1 de fevereiro de 2023 10:44 Erro
- Marcado como Resposta Leandro Massena Moraes quinta-feira, 2 de fevereiro de 2023 14:46
-
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]