说我有一个表“交易”,有列“acct_id”“trans_date”和“trans_type”,我想筛选此表,以便我只有最后一个交易为每个帐户。很明显,我可以做类似如何为每个帐户的上次交易进行SQL查询?
SELECT acct_id, max(trans_date) as trans_date
FROM transactions GROUP BY acct_id;
但后来我失去了我的trans_type。然后我可以用我的日期和帐户ID列表进行第二次SQL调用,并获得我的trans_type,但是这感觉非常笨拙,因为它意味着要么将数据来回发送到SQL Server,要么意味着创建一个临时表。
有没有办法做到这一点与单个查询,希望能与MySQL,Postgres的,SQL服务器和甲骨文的工作通用的方法。
这是我的最爱。你也可以让你的where子句为'NOT EXISTS(从事务z中选择NULL,其中a.acct_id = z.acct_id AND z.trans_date> a.trans_date)' – cjk 2010-03-02 10:10:53