从查询中获取一行

时间:2014-02-21 10:25:50

标签: sql sql-server

我有一个帐户交易列表。其中一些事务是由预定事件触发的。我需要列出所有计划的事件,并显示该计划触发的最新事务。

所以,我有一张包含交易的表格:

transaction_id
amount
scheduled_transaction_id (NULLABLE)
transaction_date

然后是一个时间表:

scheduled_tranaction_id

正如我所说,我需要做的是获取所有预定交易的清单,以及该时间表的最后交易日期:

返回scheduled_transaction_id,transaction_date,amount

我可以通过加入进行此操作吗?我想的可能是创建一个包含所有最新事务的临时表,每个scheduled_transaction_id,并按transaction_date desc排序,并以某种方式,每个计划只获得一个。然后加入那个临时表。

但这样有效吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要加入并对结果进行分组。我不知道表名,并在这里假设一些东西。但可能你会想要这样的东西:

SELECT st.scheduled_transaction_id, 
       MAX(tr.transaction_date) 
FROM   scheduled_transactions st 
       LEFT JOIN transactions tr 
              ON st.scheduled_transaction_id = tr.scheduled_transaction_id 
GROUP  BY st.scheduled_transaction_id 

如果您需要更多列,则还必须GROUP BY这些列,或者使用AGGREGATEMAX函数。