使用MAX()和SUM()函数选择请求的单元格

时间:2011-10-25 17:20:21

标签: sql sql-server

我正在尝试创建一个返回 MAX 存款金额的帐户名称的查询。存款可以每天增加,但总和是每月。

2张表:

帐户(身份证,姓名)

存款(Id,日期,存款)

我需要获得当月最大存款金额的账户名称。

例如:

帐户

1 Name1

2 Name2

3 Name3

4 Name4

矿床

1 12 2010-01-01

1 13 2010-01-02

2 30 2010-02-02

3 15 2010-02-02

4 10 2010-02-03

1 30 2010-02-02

结果应为Name1。

到目前为止,我创建了一个查询,该查询返回一个表,其中包含每个帐户每月的总和:

SELECT *
FROM
(
SELECT SUM(Deposits.deposit) as SumMonth , Deposits.account_id as Id
FROM Deposits
GROUP BY Deposits.account_id, MONTH(Deposits.Date) 
) 
as A INNER JOIN Accounts ON Accounts.id = A.Id

该查询返回:

25 1 1姓名1 30 1 1姓名1
30 2 2名称2
15 3 3姓名3
10 4 4姓名4

任何想法?

1 个答案:

答案 0 :(得分:2)

嗯,你自己完成了第一步。 现在接受这个查询,Order By SumMonth DESC。使用TOP 1,您将获得第一名。

像:

SELECT TOP 1 *
FROM
(
SELECT SUM(Deposits.deposit) as SumMonth , Deposits.account_id as Id
FROM Deposits
GROUP BY Deposits.account_id, MONTH(Deposits.Date) 
) 
AS a INNER JOIN Accounts ON Accounts.id = a.Id
ORDER BY Accounts.SumMonth DESC