---
title: "avrunda pris"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/169073-avrunda-pris"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Vinnaren"
published: "2008-02-15T12:43:10.000Z"
updated: "2008-02-15T15:54:05.000Z"
replies: 4
views: 891
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/169073-avrunda-pris"
---

# avrunda pris

## #1 — Vinnaren, 2008-02-15T12:43Z

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

Permalänk: https://www.webforum.nu/p/169073

## #2 — freddyk, 2008-02-15T13:44Z

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.

Permalänk: https://www.webforum.nu/p/2079942

## #3 — Fredde Mannen, 2008-02-15T14:37Z

> **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..

Permalänk: https://www.webforum.nu/p/2079962

## #4 — aasah, 2008-02-15T15:05Z

...

Permalänk: https://www.webforum.nu/p/2079969

## #5 — Troxy, 2008-02-15T15:54Z

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

Permalänk: https://www.webforum.nu/p/2079974

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/169073-avrunda-pris
