80 votes

Valeurs décimales en SQL pour diviser les résultats

En SQL, j'ai col1 et col2 . Les deux sont des entiers.

Je veux faire comme :

 select col1/col2 from tbl1

J'obtiens le résultat 1col1=3 et col2=2

Le résultat que je veux est 1.1

J'ai mis round(col1/col2,2) . Le résultat est toujours 1.

J'ai mis decimal(col1/col2,2) . La fonction décimale n'est pas intégrée.

Comment puis-je faire exactement pour obtenir 1.1?

63voto

Shiv Kumar Points 5939

Vous devrez convertir ou convertir les valeurs en décimales avant la division. Regarde ça http://msdn.microsoft.com/en-us/library/aa226054.aspx

Par exemple

 DECLARE @num1 int = 3 DECLARE @num2 int = 2

SELECT @num1/@num2

SELECT @num1/CONVERT(decimal(4,2), @num2)

Le premier SELECT donnera ce que vous voyez tandis que le second SELECT aura la bonne réponse 1.500000

6voto

CAST( ROUND(columnA *1.00 / columnB, 2) AS FLOAT)

3voto

ashish.chotalia Points 2105

Il peut y avoir d'autres façons d'obtenir le résultat souhaité.

 Declare @a int
Declare @b int
SET @a = 3
SET @b=2
SELECT cast((cast(@a as float)/ cast(@b as float)) as float)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X