查询每个小部件最近的两个条目

时间:2009-09-08 19:54:02

标签: sql ms-access date

我有两张桌子。 One(Widgets)有一个小部件列表(ID,widget_name,颜色等等)和有关它们的数据。 另一个(测试)有一个在小部件上运行的测试列表(ID,日期,信息1,信息2等)。

我想要做的是显示最近的两个测试。我不认为我真的需要使用表格小部件,但我描述它,所以你会知道我来自哪里。

我构建了一个使用MAX()函数的“Totals”查询,并为每个ID显示单个最新日期。然后,我可以使用此查询构建另一个查询,该查询显示有关该窗口小部件在该日期发生的测试的有用信息。我真正需要的是,每个小部件都有最近两个测试日期。

2 个答案:

答案 0 :(得分:2)

如果您需要最近的两个测试,那么

Select * From Tests T
Where (Select Count(*) From tests
       Where testDate > T.TestDate) < 2

如果您需要为每个Widget进行两次最新测试,那么

Select * From Tests T
Where (Select Count(*) From tests
       Where WidgetId = T.WidgetId 
           And testDate > T.TestDate) < 2

答案 1 :(得分:0)

(假设同一小部件​​的所有日期都是唯一的)

select T.*
from Widget W
join Test T on T.widget_id = W.id
where T.date >= (
    select max(T2.date)
    from Test T2
    where T2.widget_id = W.id
    and T2.date < (
        select max(T3.date)
        from Test T3
        where T3.widget_id = W.id
    )
) 
or T.date == (
    select max(T2.date)
    from Test T2
    where T2.widget_id = W.id
)