我想做一个查询,它会告诉我今天之前发生的所有订单。我用这个查询实现了它
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-
-------------------
我试图仅通过名称进行分组,但我发现这是不可能的。
答案 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