2 u012575301 u012575301 于 2014.12.01 16:53 提问

sql语句按年怎样分组 求大神支招

比如下面:
比如字段两列
A B
2011 100
2011 60
2011 70
2012 200
2012 250
2013 300
2013 400

我想最后得到分组结果 比如:
2011年的为一个数组 array(
2011 => 100,
2011 => 60,
2011 => 70,


然后 2012和2013 和2011 一个道理
求大神支招

4个回答

fredrickhu
fredrickhu   Ds   Rxr 2014.12.03 16:40
已采纳

--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table tb
insert [tb]
select 2011,100 union all
select 2011,60 union all
select 2011,70 union all
select 2012,200 union all
select 2012,250 union all
select 2013,300 union all
select 2013,400
--------------开始查询--------------------------
;with f as
(select id=row_number()over(order by getdate()),* from tb)

SELECT A.A,A.B,B.PX FROM F AS A
INNER JOIN
(
SELECT ROW_NUMBER()OVER( ORDER BY MIN(ID)) AS PX ,a FROM f GROUP BY a
) AS B
ON A.A=B.A
----------------结果----------------------------
/* A B PX


2011 100 1
2011 60 1
2011 70 1
2012 200 2
2012 250 2
2013 300 3
2013 400 3
*/

phanaoo
phanaoo   2014.12.01 17:24

都取出来,在代码里处理。。。

u012913636
u012913636   2014.12.01 17:49

这个要看你查什么了,如果只分组:select a from table group by a ;
如果需对b求和:select a,sum(b) from table group by a ;

zhongshaoguo
zhongshaoguo +1
3 年多之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.01 19:13

有bug,回答不方便贴出代码。请自己看 http://www.cnblogs.com/willick/archive/2013/07/26/3218738.html

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!