Сумма пустых значений - PullRequest
0 голосов
/ 21 мая 2019

Как составить сумму пустых значений в SQL Server?

Я пытался со следующим, но возвращает ноль

Declare @val varchar
Declare @columns varchar(20) 
declare @sql varchar(200)
set @columns= 'branch'

set @sql  = 'select ' + @val +'= sum(case when @columns = '''' then 1 else 0 end)
         from dbo.companies'
exec(@sql)
select @val

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

1 Ответ

1 голос
/ 21 мая 2019

Всего ударов в темноте, но я думаю , что вы ищете:

DECLARE @Count int, @Column sysname;
DECLARE @SQL nvarchar(MAX);

SET @Column = N'SomeColumnName';

SET @SQL = N'SELECT @Count = COUNT(CASE ' + QUOTENAME(@Column) + N' WHEN '''' THEN 1 END) FROM dbo.companies;';
EXEC sp_excutesql @SQL, N'@Count int OUTPUT',@Count = @Count OUTPUT;
SELECT @Count;

Редактировать: обратите внимание, что '' и NULL не являются одним и тем же значением; что-то, о чем вы, кажется, не подозреваете, рассматривая где конкатенацию переменной (@Val типа данных varchar(1)) со значением NULL в буквальную строку. NULL + {expr} = NULL. Если вы хотите сосчитать строки с помощью NULL, не пустая строка - это IS NULL (и вам нужно переместить WHEN).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...