SQL2005 +在内连接中基于日期时间返回不同的结果

时间:2009-05-27 23:49:14

标签: sql sql-server sql-server-2005 tsql

我有一个时刻,我想做的事情非常简单,我想我只是在寻找错误的解决方案。我想简单地返回一个基于相关表的日期戳排序的表。

即:

Table 1:
200   MyStuff   OK
201   Other     Why
202   Flat      So

Table 2:
1  200  5/12/2009  MyValue1
2  200  5/11/2009  MyValue2
3  201  7/10/2009  MyValue3
4  201  7/08/2009  MyValue4

我想要返回根据第二个表中的日期排序的第一个表,所以我的结果应该是

201  Other   Why
200  MyStuff OK
202  Flat    So

我尝试过做一个内部联接,但是我选择了不同的东西,我必须包括第二个表中我排序的日期,因此我最终在返回表上有重复的pk。

请帮助我理解我在这里的菜鸟错误。

1 个答案:

答案 0 :(得分:0)

由于表1中的每一行都有多行,因此您必须决定如何处理日期以及排序。

假设您要对最大日期戳进行排序,您可以执行以下操作:

select table1.*, t2.max_ds
from table1 
inner join (select id, max(datestamp) as max_ds from table2 group by id) t2
on t2.id = table1.id
order by t2.max_ds

你显然必须添加一些空处理和诸如此类的东西,但这应该让你开始。