2013-10-07 90 views
0

我有一個表有3個字段 - account_no,date,product。選擇最新的產品編號

它由account_no,date唯一。

我想生成一個表,其中包含所有account_no和最新產品 - 即最近一次使用account_no的產品。

我如何做到這一點?

+0

抱歉無法發佈數據樣本。想到的是分兩步進行。創建一個account_no,max(date)表作爲日期,內部通過account_no和date將它與原始表連接起來。 但我不知道這是否是最好的做法... – KalEl

+1

也許我錯過了一些東西。但是難道你不能僅僅通過account_no,product來從x組中選擇account_no,product,max(date)嗎? – Andrew

+0

這個問題很常見。我已經添加了[tag:most-n-per-group]標籤。您應該閱讀過去提供的一些解決方案。 –

回答

1

它可能應該是這樣的

select account_no, product 
    from table as T1 
    where (T1.account_no, T1.date) in (select account_no, max(date) from 
(select account_no, date from table T2 where T2.account_no = T1.account_no)) 

這是Oracle/PostgreSQL的語法,但你可以從它那裏得到的想法。

希望它有幫助!