T-SQL:如何选择一列或另一列?

sti*_*ghy 2 sql t-sql sql-server

我需要进行查询并从一列获取一个日期,如果它不是null,则从第二列开始.

例如,我的表是

Date1         Date2        AnotherColumn
01-01-2012    02-01-2012      ABC
NULL          02-01-2012      CDE
03-01-2012    05-01-2012      XZY
Run Code Online (Sandbox Code Playgroud)

Date1如果Date1不为null,则我的查询必须返回,否则返回Date2.

查询结果:

   Date         AnotherColumn
   01-01-2012     ABC
   02-01-2012     CDE
   03-01-2012     XYZ
Run Code Online (Sandbox Code Playgroud)

怎么能在T-SQL中做到这一点?

das*_*ght 6

细节取决于您的RDBMS,但许多引擎提供某种COALESCE功能.

以下是在SQL Server中执行此操作的方法:

select COALESCE(t.Date1, t.Date2) as Date
from MyTable t
Run Code Online (Sandbox Code Playgroud)

当合并函数不可用时,您可以使用条件表达式.以下是SQL Server的语法:

select case
    when t.Date1 is not null then t.Date1
    else t.Date2
end as Date
from MyTable t
Run Code Online (Sandbox Code Playgroud)