Sql server 获取其中最新的行和列的和
在我的表中,我有三列Sql server 获取其中最新的行和列的和,sql-server,Sql Server,在我的表中,我有三列金额,日期,成员ID。现在,我想得到表中插入的最新金额和到目前为止插入的全部金额的总和 我的问题是这样的 SELECT amount , SUM(amount) as TotalAmount FROM [Transactions] WHERE memberid = 1629 Order By Date DESC 但这会抛出这样的错误 SELECT amount , SUM(amount) as TotalAmount FROM [Transactions] WHER
金额
,日期
,成员ID
。现在,我想得到表中插入的最新金额和到目前为止插入的全部金额的总和
我的问题是这样的
SELECT amount , SUM(amount) as TotalAmount FROM [Transactions]
WHERE memberid = 1629 Order By Date DESC
但这会抛出这样的错误
SELECT amount , SUM(amount) as TotalAmount FROM [Transactions]
WHERE memberid = 1629 Order By Date DESC
Msg 8120,16级,状态1,第1行
列“Transactions.amount”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中
有人能指出我做错了什么吗
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])
只需添加
分组依据
子句
SELECT amount , SUM(amount) as TotalAmount FROM [Transactions]
GROUP BY amount WHERE memberid = 1629 Order By Date DESC
我建议将
TOP 1
与ORDER BY DATE DESC
一起使用,而不是DATE=(从[Transactions]中选择MAX(DATE))