2016-12-08 28 views
1

在我的表中我有三列amount, date,memberID。现在我想要获得最新金额插入到表格中,以及迄今为止插入的全部金额的总和。获取最新的一列和其中列的总和

我的查询是这样

SELECT amount , SUM(amount) as TotalAmount FROM [Transactions] 
WHERE memberid = 1629 Order By Date DESC 

但是,这将引发这样

消息8120,级别16,状态1,行 列 'Transactions.amount' 是无效的错误选择列表,因为它不包含在聚合函数或GROUP BY子句中。

任何人都可以指出我在做什么错在这里?

回答

2
SELECT amount AS LatestAmount, 
     (SELECT SUM(amount) FROM [Transactions]) AS TotalAmount 
FROM [Transactions] 
WHERE date = (SELECT MAX(date) FROM [Transactions]) 

请注意,如果超过一个最新金额的联系,上述查询会为每个绑定交易产生一个记录。如果你只想要一个结果,而你以后使用SQL Server 2008,或者您可以使用TOP(1)来限制到一个结果:

SELECT TOP(1) amount AS LatestAmount, 
     (SELECT SUM(amount) FROM [Transactions]) AS TotalAmount 
FROM [Transactions] 
WHERE date = (SELECT MAX(date) FROM [Transactions]) 
+0

我会建议使用' TOP 1'用'ORDER BY DATE DESC'代替'date =(SELECT MAX(date)FROM [Transactions])' – ughai

0

只需添加Group by条款

SELECT amount , SUM(amount) as TotalAmount FROM [Transactions] 
GROUP BY amount WHERE memberid = 1629 Order By Date DESC