关于Group By统计并同时显示多列数据问题

xxwnet 2006-06-08 01:48:04
如下表:

id F1 F2 F3 F4 F5 F6......
1 a b 12 25 10 20
2 a b 20 5 10 21
3 c d 12 123 1 21

我想达到如下效果
将F1,F2相同记录进行合并后只保留一条(列出所有字段),并对F3进行SUM求和

请问SQL语句该怎么写?
...全文
892 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangang 2006-06-08
  • 打赏
  • 举报
回复
mark
xxwnet 2006-06-08
  • 打赏
  • 举报
回复
搞定了,谢谢各位了...
xeqtr1982 2006-06-08
  • 打赏
  • 举报
回复
create table tb(id int,F1 varchar(10),F2 varchar(10),F3 int,F4 int,F5 int,F6 int)
insert into tb select 1,'a','b',12,25,10,20
union all select 2,'a','b',20,5,10,21
union all select 3,'c','d',12,123,1,21
go

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+','+name from syscolumns where id=object_id('tb') and name not in('id','F1','F2','F3') order by colid --写不要汇总的列名
exec('select F1,F2,sum(F3) as F3'+@sql+' from tb group by F1,F2'+@sql)

drop table tb

--这个样子?
xxwnet 2006-06-08
  • 打赏
  • 举报
回复
TO:
xeqtr1982(HaN)

对,就是这个意思,但字段太多,不宜全写,请问该怎么办
superunusa 2006-06-08
  • 打赏
  • 举报
回复

select f1,f2,sum(f3) from (
select f1,f2,f3 from t where id in (select max(id) from t a where a.f1=t.f1 and a.f2=t.f2)) a
group by f1,f2


xeqtr1982 2006-06-08
  • 打赏
  • 举报
回复
select F1,F2,sum(F3),F4,F5,F6....from table group by F1,F2,F4,F5,F6.....

??这个意思?
xeqtr1982 2006-06-08
  • 打赏
  • 举报
回复
其他的如f6,f7,f8....就以f1,f2相同记录的第一条记录为标准

--这句没看懂
itblog 2006-06-08
  • 打赏
  • 举报
回复
嗯~又学了一招~
xxwnet 2006-06-08
  • 打赏
  • 举报
回复
To:allismine

其他的如f6,f7,f8....就以f1,f2相同记录的第一条记录为标准,
allismine 2006-06-08
  • 打赏
  • 举报
回复
楼主的意思是要全部的字段,但只对F3进行sum运算,F4、F5等其它字段如何处理,楼主没有明说,如果只是简单的group by 肯定是不能实现。
xeqtr1982 2006-06-08
  • 打赏
  • 举报
回复
--动态SQL
create table tb(id int,F1 varchar(10),F2 varchar(10),F3 int,F4 int,F5 int,F6 int)
insert into tb select 1,'a','b',12,25,10,20
union all select 2,'a','b',20,5,10,21
union all select 3,'c','d',12,123,1,21
go

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum('+name+') as '+name from syscolumns where id=object_id('tb') and name not in('id','F1','F2') order by colid --写不要汇总的列名
exec('select F1,F2'+@sql+' from tb group by F1,F2')

drop table tb
itblog 2006-06-08
  • 打赏
  • 举报
回复
select F1,F2,sum(F3) from 表名 group by F1,F2
xxwnet 2006-06-08
  • 打赏
  • 举报
回复
To:coolingpipe(冷箫轻笛)

就是因为其他的列都要,所以.....
xxwnet 2006-06-08
  • 打赏
  • 举报
回复
TO:viptiger(六嘎)

不是这个意思,我是说把F1,F2相同记录进行合同,并不是字段进行合并
也就是像 Select F1,F2,Sum(F3) Group by F1,F2 这样
但我的字段很多,不宜一个一个去写出来,请问有没有好的办法?
xeqtr1982 2006-06-08
  • 打赏
  • 举报
回复
create table tb(id int,F1 varchar(10),F2 varchar(10),F3 int,F4 int,F5 int,F6 int)
insert into tb select 1,'a','b',12,25,10,20
union all select 2,'a','b',20,5,10,21
union all select 3,'c','d',12,123,1,21
go

select f1,f2,sum(f3) from tb group by f1,f2

drop table tb

??
冷箫轻笛 2006-06-08
  • 打赏
  • 举报
回复
其他的列要不要阿?

select f1,f2,sum(f3) as f3
from tablename
group by f1,f2
viptiger 2006-06-08
  • 打赏
  • 举报
回复
select f1+f2,sum(f3) from Table1
group by (f1+f2)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧