【发布时间】:2013-01-02 14:12:11
【问题描述】:
(SQL SERVER 2008) 我在多个表中添加了时间戳记录以加入主/基表。时间点有时等于基表,但有时不等于。
创建表格的代码:
create table base (time float);
create table table2 (time float, val2 char(1));
create table table3 (time float, val3 int);
insert into base values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
insert into table2 values (1, 'a'),(5, 'z'),(6, 'm'),(9, 'b');
insert into table3 values (1.5, 1),(5.3, 10),(5.5, 0),(8.1, 4);
结果集应该是基表中的每条记录和其他表中的“最新”值。以前,这些表在 Excel 中使用设置为 TRUE 的 Vlookup “连接”,这会从已排序的表中获取最接近的匹配项。
最终结果应如下所示:
time | val2 | val3
1 | a | NULL
2 | a | 1
3 | a | 1
4 | a | 1
5 | z | 1
6 | m | 0
7 | m | 0
8 | m | 0
9 | b | 4
10 | b | 4
如何使用 SQL 语句复制它?
由于只有大约 100 条记录在播放,因此我将在这里将可读性置于效率之上。
【问题讨论】:
-
table3的时间 1.5 与base的时间有什么关系。
标签: sql sql-server sql-server-2008 timestamp outer-join