请教关于SQL 分组统计的问题

tnt3331023 2013-09-22 10:27:12
数据库有如下数据:
编号 名称 数量 原价 使用状态 规格型号
070103 车床1 1 20 报废 PD300
0801 计算机 5 60 在用 联想
0501 房屋 6 10 在用 无
050102 房屋1 2 20 在用 无
050106 房屋2 1 20 在用 无
0701 车床 9 10 在用 AC500


想通过分组统计实现以下效果:
编号 名称 数量 原价 使用状态 规格型号
0501 房屋 6 10 在用 无
050102 房屋1 2 20 在用 无
050106 房屋2 1 20 在用 无
小计 9 50
0701 车床 9 10 在用 AC500
070103 车床1 1 20 报废 PD300
小计 10 30
0801 计算机 5 60 在用 联想
小计 5 60

请教下如何实现,谢谢
补充下,想实现的效果如上所述,既需要显示数据库中所有数据,又在不同数据区域进行分组,每组下面有小计进行统计数量和原价的小计值,望各位高手指点下,谢谢了
...全文
176 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tnt3331023 2013-09-24
  • 打赏
  • 举报
回复
先谢谢各位了,结贴学习下
xxfvba 2013-09-22
  • 打赏
  • 举报
回复
select id,[name],Qty,Price,[status],spc from test union all select '小计','',sum(qty),sum(price),'','' from test group by left(id,4)
Landa_Peter 2013-09-22
  • 打赏
  • 举报
回复
这个看看
SELECT CASE WHEN name IS NULL THEN '小计' WHEN id IS NULL THEN '小计' ELSE id END id,
ISNULL(name,'') name,SUM([count]) [count],SUM(price) price
FROM #temp
GROUP BY id,name
WITH rollup
Landa_Peter 2013-09-22
  • 打赏
  • 举报
回复
是不是这样?
create table #temp(id varchar(10),name varchar(10),[count] int,price int,[status] varchar(5),XH varchar(10))
insert into #temp
select '070103','车床1','1','20','报废','PD300' union all
select '0801','计算机',      '5',      '60',       '在用',         '联想' union all
select '0501',      '房屋',        '6',      '10',       '在用',         '无' union all
select '050102',    '房屋1',      '2',      '20' ,      '在用',         '无'union all
select '050106',    '房屋2',      '1',     '20',       '在用',         '无'union all
select '0701',      '车床' ,       '9',      '10',       '在用',         'AC500'
drop table #temp
select * from #temp 
SELECT CASE WHEN name IS NULL THEN '小计' WHEN id IS NULL THEN '小计' ELSE id END id,
ISNULL(name,'') name,SUM([count]) [count],SUM(price) price
,isnull([status],'')[status],isnull(XH,'')XH
FROM #temp
GROUP BY id,name,[status],XH
WITH rollup
苦逼的程序员 2013-09-22
  • 打赏
  • 举报
回复
写的很累的。。。网上参考一下吧
--小F-- 2013-09-22
  • 打赏
  • 举报
回复
又是GROUPING加GROUP WITH ROLLUP
t101lian 2013-09-22
  • 打赏
  • 举报
回复
xxfvba 2013-09-22
  • 打赏
  • 举报
回复
with test (id,[name],[count],Price,[status],xh) as (select '070103','车床1',1,20,'报废','PD300' union all select '0801','计算机', 5, 60, '在用', '联想' union all select '0501', '房屋', 6, 10, '在用', '无' union all select '050102', '房屋1', 2, 20 , '在用', '无'union all select '050106', '房屋2', 1, 20, '在用', '无'union all select '0701', '车床' , 9, 10, '在用', 'AC500' ) select * from test union all select left(id,4)+'小计','',sum([count]),sum(price),'','' from test group by left(id,4) order by id

34,588

社区成员

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

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