我正在使用SQL Server 2008。 我想知道这是否是获得第一个非空日期的最佳代码:
select actualdate = coalesce((select date1 from table1), (select date2 from table2))
答案 0 :(得分:0)
您可以在此上下文中使用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)
<强> Click here to see the SQL Profiler Read 强>
您在查询中缺少Top
语句,否则您可能会遇到以下错误..
子查询返回的值超过1。这是不允许的 子查询跟随=,!=,&lt;,&lt; =,&gt;,&gt; =或当子查询用作 表达。
答案 1 :(得分:0)
如果您可以使用一些常用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
如果这两个表之间没有任何公共ID,那么尝试使用带有row_number()的CTE来连接2个表。