我在甲骨文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