如何仅使用最新日期获取查询结果?

时间:2016-06-28 13:51:06

标签: sql ms-access

我想做一个查询,它会告诉我今天之前发生的所有订单。我用这个查询实现了它

SELECT tblOrder.date, tblOrder.name
FROM tblOrder
WHERE (((tblOrder.date)<=Date()))
GROUP BY  tblOrder.date, tblOrder.name

输出结果为:

-------------------
-  Date  -Name    -  
-------------------
-02.06.16-Company1-
-23.06.16-Company2-
-24.06.16-Company1-
-------------------

我的问题是如何进行一次查询,该查询只显示一次公司1(按某种方式分组)与最后一次日期,因此我不会两次看到同一公司。

我想要的输出:

-------------------
-  Date  -Name    -  
-------------------
-23.06.16-Company2-
-24.06.16-Company1-
-------------------

我试图仅通过名称进行分组,但我发现这是不可能的。

3 个答案:

答案 0 :(得分:3)

GROUP BY name并在每个小组中要求Max(date)

SELECT o.name, Max(o.date) AS latest_order_date
FROM tblOrder AS o
WHERE o.date <= Date()
GROUP BY o.name;

答案 1 :(得分:1)

您可以使用where子句。假设没有重复的日期:

SELECT o.*
FROM tblOrder as o
WHERE o.date = (SELECT MAX(o2.date)
                FROM tblOrder as o2
                WHERE o2.name = o.name AND o2.date <= Date()
               );

答案 2 :(得分:1)

您可以使用distinct

SELECT distinct tblOrder.name, tblOrder.date
FROM tblOrder
WHERE (((tblOrder.date)<=Date()))
GROUP BY  tblOrder.date, tblOrder.name