请教一个sql语句,分类统计的

devilchild 2008-09-04 08:42:12
名称 规格 单价 合计
a a1 8 8
a a1 8 8
a a1 8 8
a a2 10 10
a a2 10 10
b b1 12 12
b b2 13 13


这个表就差不多这样,然后分类统计,按名称,规格,单价来分
问题来了

sum group by之后,如何能够关联上所合计的项呢?
形成如下
名称 规格 单价 合计
a a1 8 24
a a1 8 8
a a1 8 8
a a1 8 8
a a2 10 20
a a2 10 10
a a2 10 10
....................

如此这般的树状结构?
请指教,谢谢回复
...全文
110 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xabcxyz 2008-09-06
  • 打赏
  • 举报
回复
这样行不

update from 表 B,(select pid, sum(合计) as 汇总 group by pid) A set B.合计 = A.汇总 where A.pid = B.id
devilchild 2008-09-04
  • 打赏
  • 举报
回复
排版不好,把表格再发一次
id 名称 规格 单价 合计 pid
1 a a1 8 0
2 a a1 8 8 1
3 a a1 8 8 1
4 a a2 10 0
5 a a2 10 10 4
6 a a2 10 10 4
7 b b1 13 0
8 b b1 13 13 7
devilchild 2008-09-04
  • 打赏
  • 举报
回复
问题更复杂了……
表格变更成这样
id 名称 规格 单价 合计 pid
1 a a1 8 0
2 a a1 8 8 1
3 a a1 8 8 1
4 a a2 10 0
5 a a2 10 10 4
6 a a2 10 10 4
7 b b1 13 0
8 b b1 13 13 7
引进了一类“合计”专门为空的记录作为树状的根部,然后叶部用字段pid关联到各根部的id
然后我想生成这么一个查询:
id 名称 规格 单价 合计 pid
1 a a1 8 16 0
2 a a1 8 8 1
3 a a1 8 8 1
4 a a2 10 20 0
5 a a2 10 10 4
6 a a2 10 10 4
7 b b1 13 13 0
8 b b1 13 13 7
各根部的合计字段是所对应叶部的合计字段的sum,这个该怎么办呢?请高手指教


xabcxyz 2008-09-04
  • 打赏
  • 举报
回复
不错,迟来一会就自己解决了哈
devilchild 2008-09-04
  • 打赏
  • 举报
回复
好了研究出来了,0 as id
devilchild 2008-09-04
  • 打赏
  • 举报
回复
来问题了,如果有个自增量的字段为id,且这个为主键的话,如果不把id放进group by里面,sql server就会报错
但我真的不需要按id分组啊,id都不相同的,分组没意义
应该怎么办?
dawugui 2008-09-04
  • 打赏
  • 举报
回复
create table tb(名称 varchar(10) , 规格 varchar(10) , 单价 int , 合计 int)
insert into tb values('a' , 'a1' , 8 , 8)
insert into tb values('a' , 'a1' , 8 , 8)
insert into tb values('a' , 'a1' , 8 , 8)
insert into tb values('a' , 'a2' , 10, 10)
insert into tb values('a' , 'a2' , 10, 10)
insert into tb values('b' , 'b1' , 12, 12)
insert into tb values('b' , 'b2' , 13, 13)
go

select * from tb
union all
select 名称,规格,单价,sum(合计) from tb group by 名称,规格,单价
order by 名称,规格,单价

drop table tb

/*
名称 规格 单价 合计
---------- ---------- ----------- -----------
a a1 8 8
a a1 8 8
a a1 8 8
a a1 8 24
a a2 10 10
a a2 10 10
a a2 10 20
b b1 12 12
b b1 12 12
b b2 13 13
b b2 13 13

(所影响的行数为 11 行)
*/
dawugui 2008-09-04
  • 打赏
  • 举报
回复
select * from tb
union all
select 名称,规格,单价,sum(合计) from tb group by 名称,规格,单价
order by 名称,规格,单价
devilchild 2008-09-04
  • 打赏
  • 举报
回复
回楼上,请写出你的方法,让我学习下
xabcxyz 2008-09-04
  • 打赏
  • 举报
回复
我也想知道

我是用笨办法 union selecet 合并两次查询然后排序弄的
devilchild 2008-09-04
  • 打赏
  • 举报
回复
晕死,忘记设定分值……

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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