web-dev-qa-db-fra.com

Comment utiliser la fonction de division dans la requête?

Je souhaite afficher le pourcentage de la colonne Overshipment.

Mon exemple de requête

select (SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q))
from 
CSPGI09_OVERSHIPMENT 

Nom de la table - CSPGI09_OVERSHIPMENT

Ma formule:

-------------------------------------------------------
SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T)
-------------------------------------------------------
SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q

et je veux afficher le résultat avec%, par exemple, 66,57%

J'utilise SQL SERVER 2008

8
Adalarasan_New

En supposant que toutes ces colonnes sont int, la première chose à trier est de convertir une ou plusieurs d'entre elles en un meilleur type de données - int la division effectue la troncature, donc tout ce qui est inférieur à 100% serait vous donne un résultat de 0:

select (100.0 * (SPGI09_EARLY_OVER_T – SPGI09_OVER_WK_EARLY_ADJUST_T)) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q)
from 
CSPGI09_OVERSHIPMENT 

Ici, j'ai multiplié l'un des nombres par 100.0 qui forcera le résultat du calcul à être fait avec floats plutôt qu'avec ints. En choisissant 100, Je le prépare également pour être traité comme %.

J'ai également été un peu dérouté par votre bracketing - je pense que j'ai raison - mais vous aviez des crochets autour de valeurs uniques, puis à d'autres endroits, vous aviez un mélange d'opérateurs (- et /) au même niveau, et s'appuyaient donc sur les règles de priorité pour définir quel opérateur appliquer en premier.

14

Essayez quelque chose comme ça

select Cast((SPGI09_EARLY_OVER_T – (SPGI09_OVER_WK_EARLY_ADJUST_T) / (SPGI09_EARLY_OVER_T + SPGR99_LATE_CM_T  + SPGR99_ON_TIME_Q)) as varchar(20) + '%' as percentageAmount
from CSPGI09_OVERSHIPMENT

Je suppose que la valeur est une représentation en pourcentage - sinon la convertir en un pourcentage total valide, puis ajoutez le signe% et convertissez la colonne en varchar.

2
Kami