我在甲骨文9G两个非常简单的表:援助联接查询
客户
userid | firstName | lastName | email
-------+-----------+----------+---------------------
1 user1 User1 [email protected]
2 user2 User2 [email protected]
订购
orderiD | userId | OrderType | Order_Date | Amount
--------+--------+-----------+------------+-------
1 1 0 12/12/2009 1
2 1 1 13/12/2009 2
3 1 1 14/12/2009 3
4 2 0 12/12/2009 4
5 2 1 16/12/2009 2
6 1 0 14/12/2009 5
7 2 1 17/12/2009 4
8 2 0 10/12/2010 2
我要选择具有所有用户订单类型0
select *
from Customer c
inner join Order o on c.userid = o.userid
where o.orderType = '0'
结果是:
orderiD | userId | OrderType | Order_Date | Amount
--------+--------+-----------+------------+--------
1 1 0 12/12/2009 1
4 2 0 12/12/2009 4
6 1 0 14/12/2009 5
8 2 0 10/12/2010 2
现在我需要修改这个查询,使只有最后一次购买日期为每个用户ID和得到的结果是这样的:
orderiD | userId | OrderType | Order_Date | Amount
--------+--------+-----------+------------+--------
6 1 0 14/12/2009 5
8 2 0 10/12/2010 2
我应该如何修改我的查询来获得这个结果?
这是怎么得到的最大日期? – DOK 2011-06-02 09:12:26
从某种意义上说,解决方案是一种作弊/快捷方式,因为它假定o.id将按日期排序(很可能是真的)。但是你可以想象一个情况,其中order_date被改变,在这种情况下,这个SQL不太正确。 – tofutim 2011-06-02 09:19:25
这在很多方面都是错误的。 @danny:请在'9,2,0,14,12/2009,9'的表格中添加一行,并再次运行查询以查明原因。 – 2011-06-02 10:01:56