AccountNo Account Name Transaction time Transaction Amount
A01 Name 1 01-01-2016 04:00:00 5000
A01 Name 1 01-01-2016 07:30:00 3500
A01 Name 1 01-01-2016 09:30:00 3500
A01 Name 1 01-01-2016 12:00:00 6500
A01 Name 1 02-02-2016 06:00:00 4000
A01 Name 1 01-02-2016 08:30:00 8000
A01 Name 1 01-02-2016 09:30:00 8000
A02 Name 2 05-01-2016 04:00:00 2000
A02 Name 2 05-01-2016 07:30:00 8500
A02 Name 2 08-02-2016 06:00:00 1000
A02 Name 2 09-02-2016 08:30:00 9000
我需要一个不使用派生表的查询来获取每个帐户具有最新事务的记录。查询应支持Oracle
或TERADATA
。 使用派生表我能够如下解决这个问题:未使用派生表的每个组的排名
SELECT a.accountno,
a.account_name,
a.transaction_time,
a.transaction_amount
FROM acct_details a,
(SELECT accountno,
Max(transaction_time) AS Transaction_time
FROM acct_details
GROUP BY accountno) b
WHERE a.accountno = b.accountno
AND a.transaction_time = b.transaction_time;
感谢您的帮助!
这不回答OP的问题。 OP正在查找每个帐号最大transaction_time的行。您的查询甚至不会查找每个帐号的下一个交易时间,更不用说在交易时间内订购!那么所有的方括号是什么? – Boneist
@Boneist:这是微软的污染,所有那些方括号和等同'SQL' ='MS SQL' :-) – dnoeth
@Boneist:跟随方括号是错误的,我只是跟着数据库中它们是如何。 –