0
votes

Agrégat horizontal dynamique (AVG)

J'ai une table contenant 3 colonnes float (nullables): xxx pré>

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> xxx pré>

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 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>

Ma requête actuelle: P>

SELECT *,
       (SELECT AVG(c)
        FROM   (VALUES(Value1),
                      (Value2),
                      (Value3)) T (c)) AS [Average]
FROM   tbl_trans_score


3 commentaires

Pouvez-vous poster votre requête?


@mkrabbani désolé, j'ai édité mon post


Consultez ma réponse .....


3 Réponses :


1
votes

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;


1 commentaires

C'est la meilleure approche dans SQL Server.



2
votes

Vous pouvez essayer ceci ci-dessous script- xxx


2 commentaires

Nous pouvons ajouter un opérateur dans cas lorsque ? 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.



0
votes

Il y a 2 moyen de résoudre votre problème ...

Première façon: xxx

 sortie -> 1

Deuxième moyen: xxx

 Entrez la description de l'image ici < / p>


0 commentaires