Sql 仅选择其中一列具有值的行

Sql 仅选择其中一列具有值的行,sql,sql-server,Sql,Sql Server,我有一张桌子 ID Number Param1 Param2 Param3 Param4 Param 5 1 null null null null null XTO10 2 null null null KMC3

我有一张桌子

ID    Number           Param1        Param2        Param3          Param4        Param 5
1      null             null          null          null            null         XTO10
2      null             null          null          KMC3            null         null
3      null             YUP           null          null            null         null
4      103              VB0           BJ0           KL9             null         null
5      null             FH1           null          null            null         null
6      103              VB0           BJ0           KL9             null         null
7      103             null           null          KL9             null         null
8      103             VB0            BJ0           KL9             AS1           AM
9      null            VB0            BJ0           KL9             AS1           AM
10     99              HS1            null          null            AS1           AM
你怎么得到的

仅选择其中一列具有值的行。 只有一个值

ID    Number           Param1        Param2         Param3          Param4       Param 5
1      null             null          null          null            null         XTO10
2      null             null          null          KMC3            null         null
3      null             YUP           null          null            null         null
5      null             FH1           null          null            null         null

您可以测试每列的总和是否不为null,并仅返回总计为1的行

select *
from Table
where
Iif(number is null,0,1) +
Iif(param1 is null,0,1) +
Iif(param2 is null,0,1) +
Iif(param3 is null,0,1) +
Iif(param4 is null,0,1) +
Iif(param5 is null,0,1) =1

使用
案例的备选方案

select *
from t
where
case when number is null then 0 else 1 end +
case when param1 is null then 0 else 1 end +
case when param2 is null then 0 else 1 end +
case when param3 is null then 0 else 1 end +
case when param4 is null then 0 else 1 end +
case when param5 is null then 0 else 1 end=1

“您使用的是哪种DBMS产品?”SQL“只是所有关系数据库使用的查询语言,而不是特定数据库产品的名称。“MS SQL 2012Function lif需要3个变量。错误…@Denis请解释一下你的意思?它与3个参数一起使用,执行时没有错误。关键字“is”附近的语法不正确。@Denis Sql Server中没有语法错误,是否使用其他RDBMS?我使用MS Sql 2012