首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQLserver 怎么分组合计

2013-08-13 
SQLserver 如何分组合计?例如,有表名称列W_anme,数量列w_slW_anmew_sl---------------------------aa3bb6c

SQLserver 如何分组合计?
例如,有表名称列W_anme,数量列w_sl
W_anme         w_sl
---------------------------
aa               3
bb               6
cc               2
aa               1
bb               8
bb               5
---------------------------
想得到
W_anme         w_sl
---------------------------
aa               4
bb               19
cc               2
---------------------------

这个SQL语句怎么写?
[解决办法]


declare @t table (W_anme varchar(2),w_sl int)
insert into @t
select 'aa',3 union all
select 'bb',6 union all
select 'cc',2 union all
select 'aa',1 union all
select 'bb',8 union all
select 'bb',5

select W_anme,sum(w_sl) w_sl from @t group by W_anme
/*
W_anme w_sl
------ -----------
aa     4
bb     19
cc     2

*/

[解决办法]

select W_anme,sum(w_sl) w_sl from 你的表名 group by W_anme

[解决办法]
select W_anme,sum(w_sl) as 别名 from TB group by W_anme
[解决办法]
引用:

上面的问题,怎么办

declare @t table (W_anme varchar(2),w_sl int,c varchar(20),d int)
insert into @t
select 'aa',3,'c',2 union all
select 'bb',6,'c',2 union all
select 'cc',2,'c',2 union all
select 'aa',1,'c',2 union all
select 'bb',8,'c',2 union all
select 'bb',5,'c',2

select W_anme, w_sl=COUNT(w_sl),c,d from @t
group by W_anme,c,d

注意红色对应就可以了
[解决办法]
select W_anme,sum(w_sl) w_sl from  tbl group by W_anme
select 中的列要显示的话,就必须在group by 后面加上去
[解决办法]
不知道楼主想要什么,建议先了解分组聚合的用法。楼主的要求可以下面语句

select id,w_anme,sum(w_sl) over(partition by w_anme) from tab

[解决办法]
--只按W_name分组的话,你的ID要多选一一下:
declare @t table (W_name varchar(2),w_sl INT, id INT)
insert into @t
select 'aa',3, 1 union all
select 'bb',6, 2 union all
select 'cc',2, 3 union all
select 'aa',1, 4 union all
select 'bb',8, 5 union all
select 'bb',5, 6

SELECT B.*, A.W_SL FROM
(SELECT W_name, w_sl=SUM(w_sl) FROM @t GROUP BY W_name) a
CROSS APPLY
(SELECT TOP(1) * FROM @t WHERE W_name = a.W_name ORDER BY id DESC) b --想取哪一条,自己随意

热点排行