我正在使用 SQL Server 2008。我想知道这是否是获得第一个非空日期的最佳代码:
select actualdate = coalesce((select date1 from table1), (select date2 from table2))
我正在使用 SQL Server 2008。我想知道这是否是获得第一个非空日期的最佳代码:
select actualdate = coalesce((select date1 from table1), (select date2 from table2))
您可以IsNull
在这种情况下使用。
Coalesce
Not Null
当你有超过一列来获得价值时应该使用。
select ISNULL((select top 1 OBJECT_ID from sys.objects), 0)
go
select coalesce((select top 1 OBJECT_ID from sys.objects), 0)
您Top
在查询中缺少语句,否则您可能会遇到以下错误。
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
如果您可以使用一些通用 id 连接两个表,则可以使用以下查询。
select @actualdate = CASE WHEN t1.date1 is null then t2.date else t1.date end
from table1 t1 inner join table2 t2
on t1.id=t2.id
如果您在这 2 个表之间没有任何共同的 id,请尝试使用带有 row_number() 的 CTE 来加入 2 个表。