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?
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?