2016-12-08 27 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