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