SQL存储过程-在行中计数特定的非空列

SQL存储过程-在行中计数特定的非空列,sql,stored-procedures,Sql,Stored Procedures,我有一个包含多个列和行的表,我需要从中选择两个不为null的特定列的计数 换言之: LoadID、StudyID、数据、结构、状态、进度、错误、文件类型 选择非空数据和结构的计数,其中LoadID=一个数字 我知道我可以做嵌套的IFs,但我想知道是否有一种更短、更整洁的方法可以做到这一点 问候,, Byron Cobb我需要选择行中不为空的列数,而不是行数。我不确定我是否完全理解,您想要每行的计数还是所有空值的总计数;但是cte的公共表表达式可能很有用,我会尽我所能解释:选择1行-选择数据,如果

我有一个包含多个列和行的表,我需要从中选择两个不为null的特定列的计数

换言之:

LoadID、StudyID、数据、结构、状态、进度、错误、文件类型

选择非空数据和结构的计数,其中LoadID=一个数字

我知道我可以做嵌套的IFs,但我想知道是否有一种更短、更整洁的方法可以做到这一点

问候,,
Byron Cobb

我需要选择行中不为空的列数,而不是行数。我不确定我是否完全理解,您想要每行的计数还是所有空值的总计数;但是cte的公共表表达式可能很有用,我会尽我所能解释:选择1行-选择数据,如果它是null count+=1,选择结构,如果它是null count+=1。我需要在SQLServer2008存储过程中执行类似的操作。
select count(*) from table where data != null and structure !=null and loadid = a number
select case when Data is null then 1 else 0 end + 
case when Structure is null then 1 else 0 end as null_columns_amount 
from YourTable 
where LoadID = ?