1

重複の可能性:
1 つのレコードで null 値を持つすべてのフィールドを SQL でカウントする方法は?

私は5つの列を持つテーブルを持っています:

名前 生年月日 メール 電話 役職
abc null a@c.com null null
BBCヌルヌルヌルヌル

行内の null 列の数を見つけることができるようにクエリを作成するにはどうすればよいですか?

(たとえば、行 1 には 3 つの null 値があり、行 2 には 4 つの null 値があります。)

SQL Server 2008 を使用しています。

4

2 に答える 2

1

単純な方法:

SELECT CASE WHEN Name IS NULL THEN 1 ELSE 0 END +
    CASE WHEN DOB IS NULL THEN 1 ELSE 0 END +       
    CASE WHEN Email IS NULL THEN 1 ELSE 0 END +       
    CASE WHEN phone IS NULL THEN 1 ELSE 0 END +       
    CASE WHEN jobtitle IS NULL THEN 1 ELSE 0 END

しかし、私はこれらの 76 を書きたくありません。それでは、動的な方法はどうですか(テストされていませんが、これらの線に沿ったものです):

DECLARE @SQL NVARCHAR(4000);    
SET @SQL = 'SELECT theTable.ID, ' + 
    STUFF((SELECT '+ CASE WHEN ' + QUOTENAME(COLUMN_NAME) + 
        ' IS NULL THEN 1 ELSE 0 END' 
        FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_NAME = 'theTable' FOR XML PATH('')) , 1 , 1 , '') 
    + ' FROM theTable';    
EXEC(@SQL);
于 2012-09-20T13:15:45.877 に答える
-2

唯一の方法は、各列を指定することだと思います

select sum(case when item1 is null then 1 else 0 end
          +case when item2 is null then 1 else 0 end
          +case when item3 is null then 1 else 0 end
          +case when item4 is null then 1 else 0 end
          +case when item5 is null then 1 else 0 end
          +case when item6 is null then 1 else 0 end
          ) as grandtotalnulls
  from yourtable
于 2012-09-20T13:23:52.170 に答える