私は5つの列を持つテーブルを持っています:
名前 生年月日 メール 電話 役職 abc null a@c.com null null BBCヌルヌルヌルヌル
行内の null 列の数を見つけることができるようにクエリを作成するにはどうすればよいですか?
(たとえば、行 1 には 3 つの null 値があり、行 2 には 4 つの null 値があります。)
SQL Server 2008 を使用しています。
私は5つの列を持つテーブルを持っています:
名前 生年月日 メール 電話 役職 abc null a@c.com null null BBCヌルヌルヌルヌル
行内の null 列の数を見つけることができるようにクエリを作成するにはどうすればよいですか?
(たとえば、行 1 には 3 つの null 値があり、行 2 には 4 つの null 値があります。)
SQL Server 2008 を使用しています。
単純な方法:
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);
唯一の方法は、各列を指定することだと思います
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