這是一個簡化的交易表。聚合列的更優雅的方式
每一行是一個具有獨特TRANSAC ID的交易(標識字段如果你願意),一個accountpointer(外鍵在這裏沒有顯示的賬表),一個TRANSAC日期和金額。下面
的樣本數據:
trans_id acc_ptr trans_date amount
1 12 2011-08-24 2.0
2 12 2011-08-25 3.0
3 14 2011-07-28 -3.0
4 16 2011-06-14 -1.0
5 12 2011-05-15 0.5
6 16 2011-07-30 -2
我要的是很簡單的。顯示按acc_ptr分組的最近一次交易,包括該日期的金額。
我的工作完美,但我想知道的是,有沒有更優雅的方式(就編程而言)或更有效的方式來處理這個問題,特別是我對子查詢的處理量?想看看你會如何接近它。
我的方法:
select acc_ptr
, max(trans_date) as [most rec transac date]
, (select amount from transactions t2
where t2.trans_date = max(t1.trans_date)
and t2.acc_ptr = t1.acc_ptr) as amount
from transactions t1
group by acc_ptr
很好的答案。我認爲你的看起來更精緻,總體上更容易理解。我使用的是2005年,所以CTE絕對是一種選擇。 – deutschZuid
如果我希望將來包含更多依賴列(例如transac_description),它也更加靈活。 – deutschZuid