用SQL按两个字段分组查询

目前存在这样一张表:monthnomoney200311002003140020032200200411002004350020051100200523002005340... 目前存在这样一张表:
month no money
2003 1 100
2003 1 400
2003 2 200
2004 1 100
2004 3 500
2005 1 100
2005 2 300
2005 3 400
2005 3 100
我需要查询的结果是这样的:
2003 1 500
2 200
3 0
2004 1 100
2 0
3 500
2005 1 100
2 300
3 500
也就是查询每年3个no对应的money的和,想了好久也弄不出来,谁可以告诉我如何写SQL语句,感激不尽!
我把需要的结果完善一下
2003 1 500
2003 2 200
2003 3 0
2004 1 100
2004 2 0
2004 3 500
2005 1 100
2005 2 300
2005 3 500
如果可以,最好排这样,这是我最终要的结果,高手请看(斜杠是我用来帮助区分开数据的,当不存在就行):
m-n /1 /2 /3
2003 /500 /200 /0
2004 /100 /0 /500
2005 /100 /300 /500
展开
 我来答
WHITE_WIN
推荐于2017-11-26 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1867万
展开全部
SELECT month,no,money=SUM(MONEY) FROM TABLENAME GROUP BY MONTH,NO ORDER BY MONTH,NO
上面是第一个结果。

第二个这样得到:
select month as [m-n],
(select sum(money) from tablename b where b.month=a.month and b.no=1) as [1],
(select sum(money) from tablename b where b.month=a.month and b.no=2) as [2],
(select sum(money) from tablename b where b.month=a.month and b.no=3) as [3]
from
(select distinct month from tablename) a
百度网友a800768
2008-09-02 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1709万
展开全部
select month, no,sum(money) money from [表名]
GROUP BY month ,no
这样查的结果中,没有2003 3 和2004 2
的结果.因为表中没有记录

用下面试试
Select month,sum((1-abs(sign(no-1)))*money 1, sum((1-abs(sign(no-2)))*money 2, sum((1-abs(sign(no-3)))*money 3
From [表名] GUOUP BY month

如果money字段不是money类型,转换一下

Select month,convert(money,sum((1-abs(sign(no-1)))*money) 1, convert(money,sum((1-abs(sign(no-2)))*money) 2, convert(money,sum((1-abs(sign(no-3)))*money) 3
From [表名] GUOUP BY month
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
应知容R
2008-09-02 · TA获得超过438个赞
知道小有建树答主
回答量:1318
采纳率:100%
帮助的人:1164万
展开全部
select sum(money) from ** where no="1" and month='2003'
select sum(money) from ** where no="2" and month='2003'
select sum(money) from ** where no="3" and month='2003'
04\05照上
**为table名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JasonKooM
2012-09-27
知道答主
回答量:3
采纳率:0%
帮助的人:2.9万
展开全部
select month as 'm-n',
max(case no when 1 then money else 0 end) as '/1',
max(case no when 2 then money else 0 end) as '/2',

max(case no when 3 then money else 0 end) as '/3'

from table group by month
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zengwei61
2008-09-02 · TA获得超过113个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:117万
展开全部
select month,demodegree,no,sum(money) as money from 表
group by month,no order by month
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式