【发布时间】:2011-09-05 14:11:58
【问题描述】:
这是一个简化的交易表。
每一行都是一个交易,它有一个唯一的交易 id(如果你愿意,可以是身份字段)、一个帐户指针(帐户表的外键,这里没有显示)、一个交易日期和一个美元金额。
下面的示例数据:
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
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql