J'ai une table contenant 3 colonnes float (nullables): J'ai besoin d'obtenir la moyenne de ces champs (valeur1 + Value2 + Value3 / 3), mais le diviseur est en fait combien de ces champs qui ont une valeur. Donc, le résultat attendu serait: p> Quelqu'un peut aider? P> J'ai essayé une solution selon ce fil:
moyenne de plusieurs colonnes p> mais ne semblait pas fonctionner. J'ai aussi essayé de gérer cela en C #, dans lequel j'utilise Ma requête actuelle: P> pour code> boucle et un compteur pour déterminer le diviseur, puis les diviser. Cela fonctionne réellement, mais je préfère gérer cela via la requête, car il a fallu trop de temps lorsque les enregistrements ont dépassé 3 000 rangées. P>
SELECT *,
(SELECT AVG(c)
FROM (VALUES(Value1),
(Value2),
(Value3)) T (c)) AS [Average]
FROM tbl_trans_score
3 Réponses :
Une méthode à l'aide d'une sous-requête et des valeurs code> CODE> Opérateur pour normaliser les données:
SELECT V.Value1, V.Value2, V.Value3, A.Average FROM (VALUES(NULL ,NULL ,100.00), (10.00,20.00,NULL), (10.00,10.00,100.00))V(Value1,Value2,Value3) CROSS APPLY (SELECT AVG(L.[Value]) AS Average FROM (VALUES(V.Value1), (V.Value2), (V.Value3)) L([Value])) A;
C'est la meilleure approche dans SQL Server.
Vous pouvez essayer ceci ci-dessous script-
Nous pouvons ajouter un opérateur dans cas lorsque code>? Je suis désolé, je ne le savais pas auparavant, je vais essayer cela à coup sûr.
Désolé pour la réponse tardive. Cela fonctionne mieux pour moi, merci.
Pouvez-vous poster votre requête?
@mkrabbani désolé, j'ai édité mon post
Consultez ma réponse .....