Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Moyenne de plusieurs colonnes

Vous ne mentionnez pas si les colonnes sont nullables. S'ils le sont et que vous voulez la même sémantique que le AVG l'agrégat fournit que vous pouvez faire (2008)

SELECT *,
       (SELECT AVG(c)
        FROM   (VALUES(R1),
                      (R2),
                      (R3),
                      (R4),
                      (R5)) T (c)) AS [Average]
FROM   Request  

La version 2005 est un peu plus fastidieuse

SELECT *,
       (SELECT AVG(c)
        FROM   (SELECT R1
                UNION ALL
                SELECT R2
                UNION ALL
                SELECT R3
                UNION ALL
                SELECT R4
                UNION ALL
                SELECT R5) T (c)) AS [Average]
FROM   Request