Nombre de colonnes non nulles dans chaque ligne

J'ai une table qui contient 4 colonnes et dans la 5ème colonne je veux stocker le count du nombre de colonnes non nulles il y a sur les 4 précédentes. Par exemple:

Où X est une valeur:

Column1 | Column2 | Column3 | Column4 | Count X | X | NULL | X | 3 NULL | NULL | X | X | 2 NULL | NULL | NULL | NULL | 0 

     select T.Column1, T.Column2, T.Column3, T.Column4, ( select count(*) from (values (T.Column1), (T.Column2), (T.Column3), (T.Column4)) as v(col) where v.col is not null ) as Column5 from Table1 as T 
     SELECT Column1, Column2, Column3, Column4, CASE WHEN Column1 IS NOT NULL THEN 1 ELSE 0 END + CASE WHEN Column2 IS NOT NULL THEN 1 ELSE 0 END + CASE WHEN Column3 IS NOT NULL THEN 1 ELSE 0 END + CASE WHEN Column4 IS NOT NULL THEN 1 ELSE 0 END AS Column5 FROM Table 
     SELECT Column1, Column2, Column3, Column4, Column5 = LEN(COALESCE(LEFT(Column1,1),'')) + LEN(COALESCE(LEFT(Column2,1),'')) + LEN(COALESCE(LEFT(Column3,1),'')) + LEN(COALESCE(LEFT(Column4,1),'')) FROM dbo.YourTable; 

    Démonstration

     DECLARE @x TABLE(a VARCHAR(32),b INT,c VARCHAR(32),d VARCHAR(32)); INSERT @x VALUES ('01',3023,NULL,'blat'), ('02',NULL, NULL,'blat'), ('03',5,NULL,'blat'), ('04',24,'bo','blat'), (NULL, NULL, NULL, NULL); SELECT a, b, c, d, LEN(COALESCE(LEFT(a,1),'')) + LEN(COALESCE(LEFT(b,1),'')) + LEN(COALESCE(LEFT(c,1),'')) + LEN(COALESCE(LEFT(d,1),'')) FROM @x;