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所需的输出。