Usuário com melhor resposta
Como tranformmar um resultado no formato para valor como no Exemplo ( 60.750,00) por SQL

Pergunta
-
Respostas
-
Deleted
- Marcado como Resposta Robson William Silva segunda-feira, 12 de setembro de 2016 18:12
Todas as Respostas
-
Algo assim te ajuda
DECLARE @VALOR DECIMAL(15,2)
DECLARE @X INT
SET @VALOR = 2111113.55
SET @X = CASE WHEN LEN(@VALOR) BETWEEN 1 AND 6 THEN 3
WHEN LEN(@VALOR) BETWEEN 7 AND 9 THEN 2
WHEN LEN(@VALOR) BETWEEN 10 AND 12 THEN 1
WHEN LEN(@VALOR) BETWEEN 13 AND 15 THEN 0 END
SELECT REPLACE(LEFT(convert(varchar,cast(@VALOR as money),1),(LEN(@VALOR)-@X)),',','.') + ',' + RIGHT(@VALOR,2)fonte:http://pt.stackoverflow.com/questions/38455/retorno-de-casas-decimais-em-consultas-do-sqlserver
Wesley Neves
-
-
Ola Wesley,
Não sei como colocar isto na minha SQL. Eu utilizo a Oracle SQL Developer
Minha SQL está desta forma
Select DISTINCT RPKCO as Company, rpan8,rpvinv AS INVOICE_NUMBER,rpag AS Gross_Amount from proddta.f0411
where TRIM(RPKCO) IN ('00308', '00310', '00310')
and trim(rpan8) in ('184820')
and rpag > 0Resultado:
-
Eu utilizo a Oracle SQL Developer
Minha SQL está desta forma:
Select DISTINCT RPKCO as Company, rpan8,rpvinv AS INVOICE_NUMBER,rpag AS Gross_Amount
from proddta.f0411
where TRIM(RPKCO) IN ('00308', '00310', '00310')
and trim(rpan8) in ('184820')
and rpag > 0Resultado:
COMPANY RPAN8 INVOICE_NUMBER GROSS_AMOUNT 00310 184820 003435N 129360 00310 184820 003561N 148764 00310 184820 003634N 50568 -
vc pode criar uma function ,algo assim
CREATE FUNCTION Helper.FormataCasasDecimais(@texto VARCHAR(20)) RETURNS VARCHAR(20) BEGIN DECLARE @VALOR DECIMAL(15,2), @X INT, @retorno VARCHAR(20) SET @VALOR = CAST(@texto AS DECIMAL(15,0)); SET @X = CASE WHEN LEN(@VALOR) BETWEEN 1 AND 6 THEN 3 WHEN LEN( ) BETWEEN 7 AND 9 THEN 2 WHEN LEN(@VALOR) BETWEEN 10 AND 12 THEN 1 WHEN LEN(@VALOR) BETWEEN 13 AND 15 THEN 0 END SET @retorno = REPLACE(LEFT(convert(varchar,cast(@VALOR as money),1),(LEN(@VALOR)-@X)),',','.') + ',' + RIGHT(@VALOR,2) RETURN @retorno end
e fazer o select no seu campo
SELECT L.TotalDebito,Helper.FormataCasasDecimais(l.TotalCredito) FROM dbo.Lancamentos AS L
Agora vamos ater a um detalhe,essas formatações não e recomendável fazer no banco de dados conforme o nosso amigo José Diz
fazer no banco e a melhor opção para seu negócio???
Wesley Neves
-
Deleted
- Marcado como Resposta Robson William Silva segunda-feira, 12 de setembro de 2016 18:12
-
Olá Jose,
o valor que eu quero que traga é 1.293,60
COMPANY RPAN8 INVOICE_NUMBER GROSS_AMOUNT 00310 184820 003435N 129360 Resultado esperado
COMPANY RPAN8 INVOICE_NUMBER GROSS_AMOUNT 00310 184820 003435N 1.293,60 Não sei como incluir na minha SQL
Select DISTINCT RPKCO as Company,rpan8, rpvinv AS INVOICE_NUMBER, rpag AS Gross_Amount,
where TRIM(RPKCO) IN ('00308', '00310', '00310')
and trim(rpan8) in ('184820') -
Um jeito bem simples no SQL, seria usar a função FORMAT(), mas pode fazer a sua própria função com a lógica abaixo:
DECLARE @VL Numeric(18,2),
@FM Varchar(50),
@PS SmallInt;
SELECT @VL = 54869875416.32,
@FM = REPLACE(CAST(@VL AS Varchar(20)),'.',','),
@PS = CHARINDEX(',',@FM);
WHILE (@PS > 4)
BEGIN
SELECT @FM = STUFF(@FM,@PS-3,0,'.'),
@PS = @PS -3;
END
SELECT @FM
- Sugerido como Resposta Zé Bill quinta-feira, 22 de setembro de 2016 16:34