webForumDet fria alternativet

avrunda pris

4 svar · 863 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005833 inlägg
#1

har följande:

	
DECLARE @ToPay decimal(16,2)

INSERT INTO [order](CustId, PayId, Orderdate, PayPrice, Message)
VALUES(@CustId, @PayId, getdate(), @ToPay, @Message)

Nu vill jag avrunda @ToPay till en korrekt betalningssumma. tex har den värdet 100.35 så ska de avrunda till 100.50 osv

Hur löser man detta??

Anv mssql

Tacksam för all hjälp :stud

freddykMedlem sedan okt. 2006103 inlägg
#2

Du kanske kan splitta talet och ta delen efter (.) och arbeta med det för avrundning uppåt/neråt? Därefter slå ihop igen.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#3

freddyk skrev:

Du kanske kan splitta talet och ta delen efter (.) och arbeta med det för avrundning uppåt/neråt? Därefter slå ihop igen.

Lekte lite med freddyk's förslag..

DECLARE @ToPay decimal(16,2)
DECLARE @After varchar(10)
DECLARE @Before varchar(10)
DECLARE @Concated Varchar(16)

/* Exempel på värdet*/
SET @ToPay = 101.54

/* Hämta det som är efter punkten i @ToPay*/
SET @After = SUBSTRING(Convert(char,@ToPay),CHARINDEX('.',@ToPay) + 1,LEN(@ToPay))

/* Hämta det som är före punkten i @ToPay */
SET @Before = SUBSTRING(Convert(char,@ToPay),0,CHARINDEX('.',@ToPay))

if Convert(int, @After) < 50 
	Begin
		Select @ToPay As NotRounded, @Before + '.50' As Rounded
	End
Else
	Begin
		Select 	@ToPay As NotRounded, Convert(decimal, @Before + 1) As Rounded
	End

Sen beror det lite på vilka avrundningsregler man vill ha..

Du kan ju pröva denna i Management Studio och testa dig fram..

aasahMedlem sedan mars 20034 471 inlägg
#4

...

TroxyMedlem sedan mars 20041 505 inlägg
#5

Här är en lite enklare variant :moose

DECLARE @ToPay DECIMAL(16,2)
SET @ToPay = 10.35
SET @ToPay = (ROUND((@ToPay * 2), 0) / 2)
SELECT @ToPay

I detta fall får jag ut 10.50 (SQL 2000) :birp

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)