spoque
Messages postés9Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention19 février 2005
-
18 févr. 2005 à 07:58
kapapa -
9 janv. 2021 à 21:12
Hello toujour pas trouvé une solution pour ma requete j'aimerais deux chiffres après la virgule.
Cordialement
select sum(compte) from (SELECT (COUNT (ID)*10) as compte FROM Users WHERE Name LIKE '%' AND ValidTill > #2005/01/01# AND ValidTill < #2005/12/31# AND TimeCredit LIKE '86%' UNION SELECT (COUNT(ID) * 4.50) as compte FROM Users WHERE Name LIKE '%' AND ValidTill > #2005/01/01# AND ValidTill < #2005/12/31# AND TimeCredit LIKE '36%' ))
on ma proposé cela mais sa ne fonctionne pas !!!
peut-être que je le place mal dans la requete?
select sum(compte) *1.076 from ...
A voir également:
Decimal sql
Sql decimal 2 chiffres après virgule - Meilleures réponses
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 18 févr. 2005 à 20:23
Ci joint aide MSDN :
----
Conversion des données numériques et décimales
Pour les types de données decimal et numeric, Microsoft® SQL Server™ considère chaque combinaison de précision et d'échelle comme un type de données différent. Par exemple, decimal(5,5) et decimal(5,0) sont considérés comme des types de données différents.
Dans les instructions Transact-SQL, une constante avec une virgule est automatiquement convertie en valeur de donnée numeric, en utilisant la précision et l'échelle requise minimale. Par exemple, la constante 12,345 est convertie en valeur numeric avec une précision de 5 et une échelle de 3.
La conversion de decimal ou numeric en float ou real peut engendrer une certaine perte de précision. La conversion de int, smallint, tinyint, float, real, money ou smallmoney en decimal ou numeric peut provoquer un dépassement de capacité.
Par défaut, SQL Server utilise les arrondis lorsqu'il convertit un nombre en valeur decimal ou numeric avec une précision et une échelle plus faibles. Toutefois, si l'option SET ARITHABORT est sur ON, SQL Server déclenche une erreur lors du dépassement de capacité. Perdre uniquement la précision et l'échelle ne suffit pas à engendrer une erreur.
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 18 févr. 2005 à 20:27
Je retire ce que j'ai dit pour le premier chiffre, il s'agit de la précision voulue et non du nombre de chiffre avant la virgule (chuis fatigué moi ;) )
cf aide msdn :
----
Précision, échelle et longueur
La précision est le nombre de chiffres qui composent un nombre. L'échelle est le nombre de chiffres à droite du point décimal (notre virgule) dans un nombre. Par exemple, le nombre 123,45 a une précision de 5 et une échelle de 2.
La précision maximum par défaut des types de données numeric et decimal est 38. Dans les versions précédentes de SQL Server, la valeur maximum par défaut était de 28.
La longueur pour un type de données numérique est le nombre d'octets utilisés pour stocker le nombre. La longueur d'une chaîne de caractères ou d'un type de données Unicode est le nombre de caractères. La longueur des types de données binary, varbinary et image est le nombre d'octets. Par exemple, un type de données int peut contenir 10 chiffres, il est stocké sur 4 octets et il n'accepte pas le point décimal. Le type de données int a une précision de 10, une longueur de 4, et une échelle de 0.
Lors de la concaténation de deux expressions char, varchar, binary ou varbinary, la longueur de l'expression obtenue est la somme des longueurs des deux expressions sources ou 8000 caractères, en fonction de la valeur la moins élevée.
Lors de la concaténation de deux expressions de type nchar ou nvarchar, la longueur de l'expression obtenue est la somme des longueurs des deux expressions sources ou 4000 caractères, en fonction de la valeur la moins élevée.
La précision et l'échelle des types de données numériques à part decimal sont fixes. Si un opérateur arithmétique se rapporte à deux expressions du même type, le résultat est également du même type avec la précision et l'échelle définies pour ce type. Si un opérateur se rapporte à deux expressions de types de données numériques différents, les règles de priorité des types de données déterminent le type du résultat. Le résultat a la précision et l'échelle correspondant à son type de données.
Le tableau suivant détaille le calcul de la précision et de l'échelle du résultat d'une opération lorsque celui-ci est de type decimal. Le résultat est de type decimal si :
<LI>Les deux expressions sont de type decimal.
<LI>une expression est de type decimal et l'autre est d'un type de degré de priorité moins élevé. </LI>
Les opérandes sont notés e1 et e2 (expressions) avec respectivement, les précisions p1 et p2 et les échelles s1et s2. La précision et l'échelle d'une expression d'un autre type que decimal sont celles définies pour cet autre type.
Opération |
Précision du résultat |
Échelle du résultat * |
----
* La précision et l'échelle du résultat ne peuvent pas dépasser 38. Si la précision du résultat dépasse 38, l'échelle correspondante est diminuée pour empêcher la troncature de la partie intégrale du résultat.
<!--END-->----
Romelard Fabrice (Alias F___)
Vous n’avez pas trouvé la réponse que vous recherchez ?
spoque
Messages postés9Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention19 février 2005 19 févr. 2005 à 14:42
Hello donc pour toi c'est cela?
(Select CONVERT( Sum(compte), decimal(10,2)) *1.076 from (SELECT (COUNT (ID)*10) as compte FROM Users WHERE Name LIKE '%' AND ValidTill > #2005/01/01# AND ValidTill < #2005/12/31# AND TimeCredit LIKE '86%' UNION SELECT (COUNT(ID) * 4.50) as compte FROM Users WHERE Name LIKE '%' AND ValidTill > #2005/01/01# AND ValidTill < #2005/12/31# AND TimeCredit LIKE '36%' ))
Désolé sa ne fonctionne toujour pas!!!
c'est peut-être à cause de sa?
while( odbc_fetch_row( $valeur ) ) //tant que c pas la fin de la table