我在SQL Server 2012中有一个数据库表"table_name1",我使用的是SQL Server Management Studio版本10.
表中的数据如下所示:
colpkey col1 col2 col3
1234 AB1234 AB1234
1265 BS5379 BS5379 BS5379
2323 WE7865 WE7865 WE7865
3267 WB7690 WB7690
6543 NULL DH6583
8798 NULL
9403 BF6543 NULL
9856 BH7548 BH7548 BH7548
Run Code Online (Sandbox Code Playgroud)
我用来创建此表样本表的查询:
create table table_name1 (
colpkey bigint primary key,
col1 varchar(10) ,
col2 varchar(10),
col3 varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
我想写一个查询,所以它应该拉两列,"colpkey"和"col"."col"应该具有"col1"的值.如果"col1"为NULL或空白,则应从"col2"获取值.如果"col2"为NULL或空白,则应从"col3"获取值.如果所有"col1","col2"和"col3"都是空白或NULL,则放入"col"的值应为空('').
因此,对于给定的示例"table_name1",查询应该提取如下数据:
colpkey col
1234 AB1234
1265 BS5379
2323 WE7865
3267 WB7690
6543 DH6583
8798
9403 BF6543
9856 BH7548
Run Code Online (Sandbox Code Playgroud)
如何编写查询来执行此操作?我试图使用CASE并提出以下查询:
select colpkey,
Case WHEN (col1 != null and col1!= '') then col1
ELSE
(CASE WHEN (col2 != null and col2!= '') then col2
ELSE
(CASE WHEN (col3 != null and col3!= '') then col3
ELSE '' END) END) END as col
from table_name1;
Run Code Online (Sandbox Code Playgroud)
但它显示每行的空白,如:
colpkey col
1234
1265
2323
3267
6543
8798
9403
9856
Run Code Online (Sandbox Code Playgroud)
请告知我查询错误的地方?