我在找到一个我认为直截了当的解决方案时遇到了问题。这是我想要做的一个例子。
TABLE A
time | state
10:00 | up
10:09 | down
10:12 | up
TABLE B
time | data
10:05 | abc
10:07 | def
10:11 | ghi
我想连接表A和B,维护B中的所有数据,如
SELECT tableB.time, tableB.data, tableA.status
INTO my_results
FROM tableB
LEFT JOIN tableA
WHERE tableB.time > (MAX(tableA.time) < tableB.time)
所以my_results表如下所示:
TABLE my_results
time | data | state
10:05 | abc | up
10:07 | def | up
10:11 | ghi | down
表A结构
source,varchar
目的地,varchar
时间,日期时间
status,varchar
表B结构
tstamp,datetime
来源,varchar
destination,varchar
这是相关信息。希望这很有用。
答案 0 :(得分:4)
这是SQL Server的解决方案:
select b.time
, b.data
, a.state
from B
outer apply
(
select top 1 *
from A
where A.time < B.time
order by
A.time desc
) as A