Member 12926744 Ответов: 1

Как получить количество только занятых значений в таблице в SQL


Всем привет,

У меня есть таблица с некоторыми столбцами и значениями. Мне нужно количество только занятых значений, исключая нулевые значения и пустое поле в одном запросе.Любая помощь будет очень признательна .Заранее спасибо.

Что я уже пробовал:

id     Name      mob            address      gender      Dob

1      Sara     9884436546       NULL          F         NULL
2      Math                      abc city      M         
3      Asyu      NULL                          NULL      1994-05-29

Here the o/p should be like this 
id 1 : Count =3
id 2:  count =3
id 3:  count =2

1 Ответов

Рейтинг:
1

CHill60

Если предположить что вас интересует только эта таблица то эта простая техника будет работать

;with x as 
(
	SELECT id, hasvalue = CASE WHEN ISNULL([Name],'') <> '' THEN 1 ELSE 0 END FROM #test
	UNION ALL
	SELECT id, hasvalue = CASE WHEN ISNULL(mob,'') <> '' THEN 1 ELSE 0 END FROM #test
	UNION ALL
	SELECT id, hasvalue = CASE WHEN ISNULL([address],'') <> '' THEN 1 ELSE 0 END FROM #test
	UNION ALL
	SELECT id, hasvalue = CASE WHEN ISNULL(gender,'') <> '' THEN 1 ELSE 0 END FROM #test
	UNION ALL
	SELECT id, hasvalue = CASE WHEN ISNULL(Dob,'') <> '' THEN 1 ELSE 0 END FROM #test
)
select id, SUM(hasvalue) from x group by id

Комментарии:
- Я продублировал вашу таблицу в #test, замените это своим именем таблицы
- Вам нужно использовать UNION ALL - это не сработает просто так. UNION (так как дубликаты будут удалены)
- Ваши данные имели пустую (не нулевую) дату - я надеюсь, что вы не сохранили эту дату в столбце varchar!