求SQL语句(求和的)

httpchina 2007-04-11 11:05:38
明细表有如下字段:
机构 物料 单价 数量 金额

现想分机构求金额和,但明细也要有,就是这种结果:
机构 物料 单价 数量 金额
总装 扳手 2 2 4
总装 起子 2 1 2
总装合计 6
注塑 原料 100 2 200
注塑 辅料 120 2 240
注塑合计 440
.......

这个SQL语句该如何写?


...全文
362 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
httpchina 2007-04-13
  • 打赏
  • 举报
回复
dawugui(潇洒老乌龟) 的性能上是否比zsforever(虎虎)的要差?
zsforever 2007-04-11
  • 打赏
  • 举报
回复
declare @t table(机构 varchar(10),物料 varchar(10),单价 int,数量 int,金额 int)
insert into @t select
'总装', '扳手', 2, 2, 4 union all select
'总装', '起子', 2, 1, 2 union all select
'总装', '起子', 2, 1, 2 union all select
'注塑', '原料', 100, 2, 200 union all select
'注塑', '辅料', 120, 2, 240

select a.机构,a.物料,b.单价,b.数量,isnull(b.金额,a.金额) 金额 from
(select case when grouping(物料)=0 then 机构 else 机构+'合计' end 机构,物料,sum(金额) 金额 from @t group by 机构,物料 with rollup having grouping(机构)=0) a
left join
@t b on a.机构=b.机构 and a.物料=b.物料
httpchina 2007-04-11
  • 打赏
  • 举报
回复
不好意思,您是指例子,SORRY
httpchina 2007-04-11
  • 打赏
  • 举报
回复
HOHO,还要用临时表啊
zsforever 2007-04-11
  • 打赏
  • 举报
回复
declare @t table(机构 varchar(10),物料 varchar(10),单价 int,数量 int,金额 int)
insert into @t select
'总装', '扳手', 2, 2, 4 union all select
'总装', '起子', 2, 1, 2 union all select
'注塑', '原料', 100, 2, 200 union all select
'注塑', '辅料', 120, 2, 240

select a.机构,a.物料,b.单价,b.数量,a.金额 from
(select 机构,物料,sum(金额) 金额 from @t group by 机构,物料 with rollup having grouping(机构)=0) a
left join
@t b on a.机构=b.机构 and a.物料=b.物料
中国风 2007-04-11
  • 打赏
  • 举报
回复
declare @ta table( name varchar(10),type varchar(5),price int,number int, [sum] int)
insert @ta select '注塑', '原料', 100, 2, 200
insert @ta select '注塑', '辅料', 120, 2, 240

select [name]=case when grouping(name)=1 then '总合计' else [name] end
,type,price,number,[sum]=sum([sum])
from @ta
group by name,type,price,number with rollup
having grouping(name)=1 or (grouping(type)=0 and grouping(price)=0 and grouping(number)=0)

(1 行受影响)

(1 行受影响)
name type price number sum
---------- ----- ----------- ----------- -----------
注塑 辅料 120 2 240
注塑 原料 100 2 200
总合计 NULL NULL NULL 440

(3 行受影响)

xiangjin0106 2007-04-11
  • 打赏
  • 举报
回复
照着dawugui(潇洒老乌龟) ( )或zsforever(虎虎) ( ) 例子填字段就可
dawugui 2007-04-11
  • 打赏
  • 举报
回复
if object_id('pubs..tb') is not null
drop table tb
go

create table tb(机构 varchar(10),物料 varchar(10),单价 int,数量 int,金额 int)
insert into tb(机构,物料,单价,数量,金额) values('总装', '扳手', 2 , 2, 4)
insert into tb(机构,物料,单价,数量,金额) values('总装', '起子', 2 , 1, 2)
insert into tb(机构,物料,单价,数量,金额) values('注塑', '原料', 100, 2, 200)
insert into tb(机构,物料,单价,数量,金额) values('注塑', '辅料', 120, 2, 240)
go

select * from
(
select * from tb
union all
select 机构 = 机构+'合计' , 物料 = null,单价 = null ,数量 = null, sum(金额) 金额 from tb group by 机构
) t
order by 机构

drop table tb

/*
机构 物料 单价 数量 金额
-------------- ---------- ----------- ----------- -----------
注塑 原料 100 2 200
注塑 辅料 120 2 240
注塑合计 NULL NULL NULL 440
总装 扳手 2 2 4
总装 起子 2 1 2
总装合计 NULL NULL NULL 6

(所影响的行数为 6 行)
*/
httpchina 2007-04-11
  • 打赏
  • 举报
回复
不好意思,偶太菜了,还是没搞定,实例比这个列多很多,我贴出来吧:
表结构:
成本中心代码, 成本中心, 入库单号,采购员,采购订单号,采购订单行号,物料编码,物料描述,订货数量,单位,接收数量,单价,金额,接收日期

显示明细,然后对每个成本中心的金额求和

查询结果希望达到:
成本中心代码, 成本中心, 入库单号,采购员,采购订单号,采购订单行号,物料编码,物料描述,
订货数量,单位,接收数量,单价,金额,接收日期

051806 锅类总装车间 R170304009 李闺 P170213002 003 303800200465 电磁阀
1.0 个 1.0 148 148 2007-03-04
051806 锅类总装车间 R170304009 李闺 P170213001 002 303800200466 割A3板
1.0 个 1.0 20 20 2007-03-04

051806 锅类总装车间合计 168


0518 计划采购中心 R170304009 张三 P170213004 001 303800100465 白纸
2.0 包 2.0 22 44 2007-03-04
0518 计划采购中心 R170304009 张三 P170213005 001 303800100466 笔记本
10 个 10 20 200 2007-03-04

051806 计划采购中心 244
。。。。。。。


34,575

社区成员

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

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