好贷网好贷款

求一条sql语句 20jnet007]

发布时间:2016-12-4 3:53:02 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"求一条sql语句 20jnet007]",主要涉及到求一条sql语句 20jnet007]方面的内容,对于求一条sql语句 20jnet007]感兴趣的同学可以参考一下。

序号 物料 数量 重量  1 A 3 5  1 A 5 6  1 B 2 6  2 C 1 9  2 D 4 2  2 D 6 3  2 C 8 5  我想得到的结果是:  序号 物料 数量 重量  1     A    8   11 1     B    2    6 合计       10   17 2     C    9    14 2     D    10   5 合计       19   19 相同序号中的,物料相同的数据进行汇总,但是重量按照物料的汇总 

GOUPING WITH ROLLUP 

---------------------------------------------------------------- -- Author  :fredrickhu(小F,向高手学习) -- Date    :2009-09-03 19:50:10 -- Verstion: --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)  -- Nov 24 2008 13:01:59  -- Copyright (c) 1988-2005 Microsoft Corporation -- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3) -- ---------------------------------------------------------------- --> 测试数据:[tb] if object_id('[tb]') is not null drop table [tb] go  create table [tb]([姓名] varchar(4),[学期] int,[语文] int,[数学] int,[英语] int,[政治] int) insert [tb] select '张三',1,70,60,80,30 union all select '张三',2,80,90,75,40 union all select '张三',3,50,70,85,60 union all select '李四',1,66,80,90,55 union all select '李四',2,75,70,85,65 --------------开始查询-------------------------- select      case when grouping(姓名)=1 then '合计' else cast(姓名 as varchar) end 姓名,      case when grouping(学期)=1 and grouping(姓名)=0 then '小计' else cast(学期 as varchar) end 学期,      sum(语文) as 语文,sum(数学) as 数学,sum(英语) as 英语,sum(政治) as 政治 from     tb  group by     姓名,学期  with rollup  ------------------------------------------------------结果------------------------------------------------------- /*姓名                             学期                             语文          数学          英语          政治 ------------------------------ ------------------------------ ----------- ----------- ----------- ----------- 李四                             1                              66          80          90          55 李四                             2                              75          70          85          65 李四                             小计                             141         150         175         120 张三                             1                              70          60          80          30 张三                             2                              80          90          75          40 张三                             3                              50          70          85          60 张三                             小计                             200         220         240         130 合计                             NULL                           341         370         415         250 (8 行受影响)  */

下班了 2楼的给你参考

select 序号,物料,数量,重量 from( select 序号 as px,序号,物料,sum(数量) as 数量,sum(重量) as 重量 from tb group by 序号,物料 union all select 序号,'合计','',sum(数量) as 数量,sum(重量) as 重量 from tb group by 序号 ) t order by px,序号,物料

合计也要显示出来??

--> 测试数据:[TB] if object_id('[TB]') is not null drop table [TB] create table [TB]([序号] varchar(10),[物料] varchar(1),[数量] int,[重量] int) insert [TB] select 1,'A',3,5 union all select 1,'A',5,6 union all select 1,'B',2,6 union all select 2,'C',1,9 union all select 2,'D',4,2 union all select 2,'D',6,3 union all select 2,'C',8,5 select 序号,物料,数量,重量 from ( select 序号,物料,数量=sum(数量),重量=sum(重量),t1=0,t2=序号 from [TB] group by 序号,物料  union all select '合计',' ',sum(数量),sum(重量),t1=1,t2=序号 from TB group by 序号)t order by t2,t1 /* 序号         物料   数量          重量           ---------- ---- ----------- -----------  1          A    8           11 1          B    2           6 合计              10          17 2          C    9           14 2          D    10          5 合计              19          19 (所影响的行数为 6 行) */ drop table TB

引用 4 楼 josy 的回复:SQL codeselect 序号,物料,数量,重量from(select 序号as px,序号,物料,sum(数量)as 数量,sum(重量)as 重量from tbgroupby 序号,物料unionallselect 序号,'合计','',sum(数量)as 数量,sum(重量)as 重量from tbgroupby 序号 ) torderby px,序号,物料 ---测试数据--- if object_id('[tb]') is not null drop table [tb] go create table [tb]([序号] int,[物料] varchar(1),[数量] int,[重量] int) insert [tb] select 1,'A',3,5 union all select 1,'A',5,6 union all select 1,'B',2,6 union all select 2,'C',1,9 union all select 2,'D',4,2 union all select 2,'D',6,3 union all select 2,'C',8,5   ---查询--- select 序号,物料,数量,重量 from( select 序号 as px,ltrim(序号) as 序号,物料,sum(数量) as 数量,sum(重量) as 重量 from tb group by 序号,物料 union all select 序号,'合计','',sum(数量) as 数量,sum(重量) as 重量 from tb group by 序号 ) t order by px,序号,物料 ---结果--- 序号           物料   数量          重量           ------------ ---- ----------- -----------  1            A    8           11 1            B    2           6 合计                10          17 2            C    9           14 2            D    10          5 合计                19          19 (所影响的行数为 6 行)

if object_id('[TB]') is not null drop table [TB] create table [TB]([序号] varchar(10),[物料] varchar(1),[数量] int,[重量] int) insert [TB] select 1,'A',3,5 union all select 1,'A',5,6 union all select 1,'B',2,6 union all select 2,'C',1,9 union all select 2,'D',4,2 union all select 2,'D',6,3 union all select 2,'C',8,5 select  (case when grouping([序号])=1 then '总计' else [序号] end) [序号], (case when grouping([物料])=1 then '总计' else [物料] end) [物料], sum([数量]) [数量],sum([重量]) [重量] from [TB]  group by [序号],[物料]  with rollup 序号         物料   数量          重量 ---------- ---- ----------- ----------- 1          A    8           11 1          B    2           6 1          总计   10          17 2          C    9           14 2          D    10          5 2          总计   19          19 总计         总计   29          36

上一篇:建数据库自增问题 20wx8849]
下一篇:在report builder里面发布报表 30helloxtayfnje]

相关文章

相关评论