TroxyMedlem sedan mars 20041 505 inlägg 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!
För att räkna ut ett pris utan moms räknar du: pris * 0,8
Om det är 25% dvs.
CatZMedlem sedan jan. 20022 440 inlägg Jag brukar spara momsen som float med två decimaler, det blir mycket enklare vid uträkningar.
LarsGMedlem sedan dec. 200012 464 inlägg Använd inte float, decimal är bättre för detta ändamål.
TroxyMedlem sedan mars 20041 505 inlägg
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?
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
TroxyMedlem sedan mars 20041 505 inlägg CONVERT(DECIMAL(8,2), ROUND(pris / ((moms / 100.0)+1.0), 2))prisexkl