Ajout et division

J'avais besoin d'aide pour faire des calculs de division avec une décimale. J'essaie de faire la sum et de split le résultat. Mon Y et X sont des entiers.

SELECT a.YearMonth, (CONVERT(DECIMAL(9,1),Y_Service)+(CONVERT(DECIMAL(9,1),x_Service)/2)) AS Average_Of_Period FROM table_IB a INNER JOIN table_UB b ON a.YearMonth=b.YearMonth 

C'est le résultat que j'obtiens:

 YearMonth| Average_Of_Period 2015-03 276318.500000 

La bonne réponse est: 185532,5

Mes valeurs Y et X diffèrent de 4 numbers à 6 numbers

On dirait que votre opération est (y) + (x / 2)?

Est-ce que ce devrait être (y + x) / 2?

La lisibilité est importante. Dans le cas où vous devez faire quelques jets laid avant le calcul, vous pouvez toujours le faire avec l'expression de la table commune ou externe appliquer :

 select a.YearMonth, (calc.Y_Service + calc.x_Service) / 2 as Average_Of_Period from table_IB as a inner join table_UB as b on a.YearMonth = b.YearMonth outer apply (select CONVERT(DECIMAL(9,1), Y_Service) as Y_Service, CONVERT(DECIMAL(9,1), x_Service) as x_Service ) as calc 

Et alors vous ne manqueriez pas que vous faites Y_Service + x_Service / 2 au lieu de (Y_Service + x_Service) / 2

Utilisez ceci à la place; c'est plus facile:

 select (x + y)/2.0 

Ajouter le point décimal au 2 changera le résultat de la division entière en division standard. Cela fonctionnera aussi, pour la même raison:

 select (x + y)*1.0/2 

Si vous voulez convertir explicitement des nombres décimaux, le plus facile à append en premier – comme d'autres commentateurs l'ont mentionné, cela facilitera la détection des erreurs mathématiques:

 select cast(x + y as decimal(10,2))/2