說我有一個表「交易」,有列「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