如何在SQL Server中对空白值求和?
我尝试了以下操作,但返回null
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语句,因为将从存储过程中为每一列返回值。
答案 0 :(得分:1)
在黑暗中完全刺伤,但我认为,您追求的是:
tibble
编辑:请注意,tibble(var = vect)
# A tibble: 3 x 1
# var
# <dbl>
#1 1
#2 2
#3 3
和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
)。