这是一个简化的交易表。聚合列的更优雅的方式
每一行是一个具有独特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