我有五列的表:
姓名 DOB 电子邮件 电话 职位 abc null a@c.com null null 英国广播公司 null null null null
如何编写查询以便可以找到一行中的空列数?
(例如,第 1 行有 3 个空值,第 2 行有 4 个空值。)
我正在使用 SQL Server 2008。
我有五列的表:
姓名 DOB 电子邮件 电话 职位 abc null a@c.com null null 英国广播公司 null null null null
如何编写查询以便可以找到一行中的空列数?
(例如,第 1 行有 3 个空值,第 2 行有 4 个空值。)
我正在使用 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);
I think the only way is to specify each of your columns
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