我正面对一段代码,这段代码对我来说似乎很难理解,尽管我对Select TOP 0和Outer APPLY分别是如何工作的有一个简要的了解。这段代码是做什么的?谢谢预支!
select * from taxex t1
outer apply
(select top 0 id, b_date, total_sum from loans t2 where t1.id = t2.id
and t1.i_date >= t2.b_date) ```
outer apply
唯一可能有用的操作是将outer apply
生成的列中的空值转换为loan
表中各自列的类型。比较:
下面的查询将使用
失败Msg 241 Level 16 State 1 Line 1转换日期失败和/或时间从字符串。
select t1.*, t2.*
from (
select 1 a, 2 b
) t1
outer apply (
select top 0 cast('2002-01-01' as date) d
) t2
union all
select 3, 4, 'abc';
而下一个是ok
select t1.*, null d
from (
select 1 a, 2 b
) t1
union all
select 3, 4, 'abc'