Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2237 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Serveur] probleme requete avec calcul (tout bete)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL Serveur] probleme requete avec calcul (tout bete)

n°1686178
mrmask
Mask A Gaz
Posté le 14-02-2008 à 10:56:02  profilanswer
 

Bonjour,
 
j'ai un probleme avec une requete tout simple :
 
SELECT     id_article, pvHT, remise, tva, ROUND((pvHT * ((100 - remise) / 100)) * (1 + tva / 1000), 2) AS totalttc
FROM         Article
 
sachant que mon totalttc= pvht * remise  * tva
pvht = int 4
remise = int 4
tva = tinyint
 
remise en pourcent (20,30,40 etc..)
tva= 196
 
lorsque j'effectue :
 
totalttc= round(rs("PVHT" ) * ((100-rs("remise" ))/100) * (1+(rs("tva" )/1000)),2)  
en asp le resultat est bon, mais impossible d'avoir le result par une requete sql
 
lorsque ma remise est à 0 j'ai totalttc=pvht des que j'ai une remise totalttc=0
 
Si qq'un a une idée ?
 
Merki

Message cité 1 fois
Message édité par mrmask le 25-10-2009 à 11:01:01

---------------
Mieux vaut être optimiste et se tromper que pessimiste et avoir raison.
mood
Publicité
Posté le 14-02-2008 à 10:56:02  profilanswer
 

n°1686708
tinoui
Posté le 15-02-2008 à 10:33:07  profilanswer
 

mrmask a écrit :


 
en asp le resultat est bon, mais impossible d'avoir le result par une requete sql
 
lorsque ma remise est à 0 j'ai totalttc=pvht des que j'ai une remise totalttc=0
 
Si qq'un a une idée ?
 
Merki


 
temporairement peux-tu peux enlever l'arrondi dans la requete SQL ?
si cela résoud le probleme, tu pourra peux être encapsuler pvHT * ((100 - remise) / 100)) * (1 + tva / 1000) dans quelque chose qui neutralise le round ...
ce n'est qu'une piste ...

n°1687783
mrmask
Mask A Gaz
Posté le 18-02-2008 à 12:55:46  profilanswer
 

merci pour ta reponse
 
j'ai testé ceci :
SELECT     id_article, pvHT, remise, tva, (pvHT * ((100 - remise) / 100)) * (1 + tva / 1000) AS totalttc
FROM         Article
 
donc sans le round toujours le meme resultat :(

n°1687800
mrmask
Mask A Gaz
Posté le 18-02-2008 à 13:56:09  profilanswer
 

SELECT     id_article, (100 - remise) / 100 AS premise
FROM         Article
 
j'ai toujours premise=0 comme resultat meme si remise = 20
 
es ce un bug sql serveur ?


Message édité par mrmask le 18-02-2008 à 13:56:40
n°1687808
mrmask
Mask A Gaz
Posté le 18-02-2008 à 14:15:32  profilanswer
 

j'ai tout re-convert et ca passe :
 
SELECT     id_article, pvHT, remise, tva, ROUND((pvHT * ((100 - CONVERT(float, remise)) / 100)) * (1 + CONVERT(float, tva) / 1000), 2) AS totalttc
FROM         Article
WHERE     (id_article = 23090)
 
zarb :(

n°1688064
tinoui
Posté le 18-02-2008 à 19:30:38  profilanswer
 

mrmask a écrit :

j'ai tout re-convert et ca passe :
 
SELECT     id_article, pvHT, remise, tva, ROUND((pvHT * ((100 - CONVERT(float, remise)) / 100)) * (1 + CONVERT(float, tva) / 1000), 2) AS totalttc
FROM         Article
WHERE     (id_article = 23090)
 
zarb :(


 
cool
 
il faut se méfier du parsing SQL ... c'est logique mais parfois déroutant
quand on relit le select : (pvHT * ((100 - remise) / 100)) * (1 + tva / 1000) AS totalttc
se résume à expression * expression AS correlation_name
 
Je crain que sqlserveur n'ai besoin de parentèses avant la clause AS pour bien s'en sortir et revenir à un truc du genre:
expression AS correlation_name
 
 
J'ignore si c'est le cas avec d'autre SGBD (je testerais avec DB2 et MySQL)
 
D'ailleurs: tu pourrais peut etre essayer sans la clause AS


Message édité par tinoui le 18-02-2008 à 20:04:53
n°1688164
tinfolley
Posté le 19-02-2008 à 08:29:01  profilanswer
 

Bonjour,
C'est complètement normal de devoir reconvertir tout tes champs avec SQLServeur, tu lui pose une opération de INT (ou Tiny) il te donne un résultat en INT.

n°1688241
MagicBuzz
Posté le 19-02-2008 à 11:07:55  profilanswer
 

+1

n°1688934
tinoui
Posté le 19-02-2008 à 22:04:28  profilanswer
 

bien vu ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Serveur] probleme requete avec calcul (tout bete)

 

Sujets relatifs
[SqlServer] Problème d'UPDATEProbleme lien hypertexte, en boucle
probleme d'iframe!!! [HTML] Probleme site web
scriptaculous: probleme avec Event.observeprobleme de requete pour recuperer un max
Pb requete Mysql[SGBDR] Base - Requete calcul montant contrat
Plus de sujets relatifs à : [SQL Serveur] probleme requete avec calcul (tout bete)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR