我有一个非常复杂的查询。我有两张桌子如下。
表1
EmployeeId Status DateA
A BIL 1/1
A BON 2/1
A BIL 2/1
A BIL 3/1
A BIL 4/1
A BIL 5/1
A BIL 6/1
表2:
Employee ID Reason ExDate DateB
A IN 1/1
A OUT 4/15 **4/1**
A IN 6/1
A OUT 8/15 **9/1**
所以,问题是。我想用表1中的日期A的值更新表2中的DateB列。其条件是
我主要是坚持第二个声明。
感谢任何帮助。
答案 0 :(得分:2)
这是MS-SQL 2005还是更晚?如果是这样,请尝试:
select *
from table2 t2 cross apply (select top 1 dateA from table1 where status = 'BIL' order by abs(datediff(d, dateA, exDate))) t1
如果看起来正确,那么你可以:
UPDATE t2 SET DateB = t1.DateA
from table2 t2 cross apply (...