2016-12-08 18 views
1

私のテーブルに私は3つの列amount,date,memberIDを持っています。今では、テーブルに挿入された最新の金額とこれまでに挿入された金額の合計を取得したいと思います。最新の行とその中の列の合計を取得

私のクエリは、この

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

のようだった。しかし、これは、これは

メッセージ8120、レベル16、状態1、行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]) 

最新の金額以上の連動が発生した場合、上記のクエリでは、結び付けトランザクションごとに1つのレコードが生成されることに注意してください。あなたが1つの結果だけをしたい、とあなたは、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

を追加し、私は '使用することをお勧めします'date =(SELECT MAX(date)FROM [Transactions])の代わりに' TOP 1'と 'ORDER BY DATE DESC ' – ughai

0

ちょうどGroup by

SELECT amount , SUM(amount) as TotalAmount FROM [Transactions] 
GROUP BY amount WHERE memberid = 1629 Order By Date DESC 
関連する問題