Tour de la plus proche à 5 dans SQL Server
J'ai de l'Argent de la colonne dans mon SQL Server 2008 table. Dans mon ci-dessous la question de savoir comment puis-je autour d'elle la plus proche de 5$
select FineAmount from tickets
Grâce
Pouvez-vous définir "le plus proche"? I. e., quel résultat voulez-vous de les valeurs 0, 1, 2,5 et 4 go? L'arrondi de l'argent peut signifier différentes choses selon le cas d'utilisation.
OriginalL'auteur acadia | 2009-11-09
Vous devez vous connecter pour publier un commentaire.
ou de mettre nicholaides suggestion dans sql
L'exemple suppose que FineAmount est de type argent.
La deuxième approche est probablement mieux que le premier fonctionne avec la limite de maximum_value_of_money_type/2
Plus sur RONDE
OriginalL'auteur kristof
Générale de mathématiques solution:
Diviser par 5, arrondir à l'entier le plus proche, puis multiplier par 5.
OriginalL'auteur nicholaides
Si vous souhaitez tronquer (aller-bas) pour un groupement de 5 utiliser le modulo de la fonction; dans Microsoft SQL Server, c'est
%
ie:
field1
- (field1
% 5)Si vous aviez champ1 == 3, alors le calcul serait:
3 - (3 % 5) = 0
si c'était 13:
13 - (13 % 5) = 10
Simplement ajouter 5 si vous voulez arrondir
Voir aussi 'MOD' n'est pas reconnu, intégré dans le nom de la fonction
Mais 10 arrondissement est 10-(10%5)+5 = 15 mais devrait être de 10.
OriginalL'auteur n8isjack
-- vous obtiendrez 7818.30
OriginalL'auteur Khaled Eltabei
Ma première solution a été
Cela fonctionne, mais est considéré par MSSQL comme "imprécis", car il utilise des nombres à virgule flottante en interne. Qui l'empêche d'être utilisé dans les vues indexées. Vous pouvez à la place faire le travail seulement avec l'arithmétique des nombres entiers:
OriginalL'auteur Ed Avis
Tour à la prochaine plus de 5
OriginalL'auteur Sergio G
Utiliser la fonction ROUND
ROUND
surcharge est d'indiquer la précision décimale, pas plusieurs à la ronde.OriginalL'auteur Ender