2012-09-20 20 views
0

Можно создать дубликат:
How to count in SQL all fields with null values in one record?Подсчет количества нулевого столбца в строке таблицы

У меня есть таблица с пятью столбцами:

 
Name  DOB Email  phone jobtitle 
abc  null [email protected]  null  null 
bbc  null null  null  null 

Как написать запрос, чтобы я мог найти количество нулевых столбцов в строке?

(например, строки 1, имеющий нулевое значение 3, и строка 2, имеющий 4 нулевых значений.)

Я использую SQL Server 2008.

+2

Добро пожаловать. В чем проблема? Что вы пробовали? – stb

+0

У меня есть онлайн-форма с 76 столбцами. Если кандидат заполняет только 30, то я должен показать процент формы – vikas

+0

. Спасибо, мартин, вы правы. – vikas

ответ

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); 
+1

это пример. У меня 76 столбцов в моей таблице – vikas

+6

'IF' недействителен в запросе таким образом в SQL Server. –

+0

@AaronBertrand Да, вы совершенно правы. –

-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 
+0

Есть ли способ сделать это, не написав 76 выражений 'CASE' (и как это отличается от решений, которые были до вас?). Пожалуйста [смотрите дубликат] (http://stackoverflow.com/questions/9079037/how-to-count-in-sql-all-fields-with-null-values-in-one-record). –

Смежные вопросы