Mysql 用于AgentID位置的Sql动态列

Mysql 用于AgentID位置的Sql动态列,mysql,linq-to-sql,Mysql,Linq To Sql,我有一张经纪人的收款台 Agentid logintime AmountReceived 1 2013/10/01 00:10:10 10000 1 2013/10/01 17:23:10 200 1 2013/10/01 00:30:41 3000 2 2013/10/02 05:10:52 1000 3 2013/10

我有一张经纪人的收款台

Agentid         logintime             AmountReceived

1        2013/10/01 00:10:10         10000
1        2013/10/01 17:23:10         200
1        2013/10/01 00:30:41         3000
2        2013/10/02 05:10:52         1000
3        2013/10/02 09:10:25         2000 
3        2013/10/03 10:10:18         2000
2        2013/10/03 13:10:35         7000 
我想要一个将输出显示为

Agentid    Amount  Rank
  1         13200    1
  2         8000     2
  3         4000     3
显示用户界面:

agentID : 1

Today:   13200 (Today amount yesturady amount should be place in this month)
Month:   Need to display month total amount(30 days amount last month amount in this year)
Year :   Need to display year total amount(12 months amount)
试试这个:

SELECT Agentid,SUM(AmountReceived) as Amount,@rownum := @rownum + 1 AS Rank
FROM TableName,(SELECT @rownum := 0) r
GROUP BY AgentID
ORDER BY SUM(AmountReceived) DESC
结果:

AGENTID  AMOUNT     RANK
1        13200      1
2        8000       2
3        4000       3
AGENTID   YEAR   MONTH      AMOUNT  RANK
1         2013   October    13200   1
2         2013   October    8000    2
3         2013   October    4000    3
请参阅中的结果

编辑:

对于年度和月度结果:

SELECT Agentid,year(logintime) as Year,monthname(logintime) as Month,SUM(AmountReceived) as Amount,@rownum := @rownum + 1 AS Rank
FROM TableName,(SELECT @rownum := 0) r
GROUP BY AgentID,year(logintime),monthname(logintime)
ORDER BY SUM(AmountReceived) DESC
结果:

AGENTID  AMOUNT     RANK
1        13200      1
2        8000       2
3        4000       3
AGENTID   YEAR   MONTH      AMOUNT  RANK
1         2013   October    13200   1
2         2013   October    8000    2
3         2013   October    4000    3

结果是。

OP听起来也像是期望
,和
明智的总数。@Ravinder:编辑了我的答案。谢谢很酷,但我觉得你被误解了。每年、上个月、这一天的总组数。OP这样问我需要显示月份和年份的总金额也在UI@Ravinder:如果我们使用
天分组,我们将无法获得OP所需的输出。