webForumDet fria alternativet

Priser och momssatser

Databaser & SQL

6 svar · 654 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#1

Hallå. Det känns som jag sitter här och tragglar matematik på grundskolenivå. Jag använder SQL Server 2000.

Jag har en tabell med massa försäljningsprodukter i.
Fältet "pris" är en float som innehåller priset inkl. moms.
Fältet "moms" är en int som innehåller momssatsen, ex. 12 eller 25.
(Det går säkert att ifrågasätta denna struktur på alla möjliga sätt, men tyvärr så är den inbakad i gamla system som jag inte kan ändra på.)

Nu vill jag göra en SELECT som ger mig priset exkl. moms, med två decimaler efter. Man kan säga att jag har två problem:

Problem #1: Hur ser formeln ut för att räkna ut priset exkl. moms?
Jag har funderat på "pris / ((moms / 100) + 1)" men går den att förenkla?

Problem #2: Det verkar vara lite trix med decimaler när man blandar float och int i uträkningar.
Hur gör jag för att få svaret avrundat till två decimaler?

Tacksam för svar!

Medlem sedan maj 20031 472 inlägg
#2

För att räkna ut ett pris utan moms räknar du: pris * 0,8
Om det är 25% dvs.

Medlem sedan jan. 20022 440 inlägg
#3

Jag brukar spara momsen som float med två decimaler, det blir mycket enklare vid uträkningar.

Medlem sedan dec. 200012 464 inlägg
#4

Använd inte float, decimal är bättre för detta ändamål.

Medlem sedan mars 20041 505 inlägg
#5

LarsG skrev:

Använd inte float, decimal är bättre för detta ändamål.

Men alltså jag är låst, får inte ändra datatyperna :P

CatZ skrev:

Jag brukar spara momsen som float med två decimaler, det blir mycket enklare vid uträkningar.

Jag håller med dig, det är säkert bättre att göra så.
Men samma sak där, jag är låst till datat som jag har eftersom det ligger i replikerade databaser som är kopplade mot system som jag inte kan påverka.

greyhound skrev:

För att räkna ut ett pris utan moms räknar du: pris * 0,8
Om det är 25% dvs.

Okej, men det går inte att göra så om man vill få det automatiskt.
För det förekommer tre olika momssatser (25, 12, 6) och då måste jag ha en formel som fungerar för alla.

Dessutom, hur hänger det ihop när man beräknar decimaltal i SQL Server 2000?
Måste alla tal som används i uträkningen vara av samma datatyp för att det ska fungera?

Medlem sedan maj 20031 472 inlägg
#6

Troxy skrev:

För det förekommer tre olika momssatser (25, 12, 6) och då måste jag ha en formel som fungerar för alla.

Jag kom på det ett litet tag efter jag postade :r

Medlem sedan mars 20041 505 inlägg
#7
CONVERT(DECIMAL(8,2), ROUND(pris / ((moms / 100.0)+1.0), 2))prisexkl
253 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)