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