您的位置:首页 > 其它

分组求和统计,with rollup 、with cube、grouping 统计函数用法

2010-03-30 10:22 302 查看
SQL code
CREATE TABLE [kc1] (
[djrq] [smalldatetime] NULL ,
[djlx] [nvarchar] (20),
[kfmc] [nvarchar] (50),
[hpmc] [nvarchar] (50),
[zl] [float] NULL
)
GO

insert into kc1 select '2010-03-20','初始库存','半成品','玉米','11'
insert into kc1 select '2010-03-20','初始库存','半成品','豆粕','22'
insert into kc1 select '2010-03-20','初始库存','半成品','鱼粉','33'
insert into kc1 select '2010-03-21','初始库存','原料','玉米','1'
insert into kc1 select '2010-03-21','初始库存','原料','豆粕','2'
insert into kc1 select '2010-03-22','原种入库','半成品','玉米','11'
insert into kc1 select '2010-03-22','原种入库','半成品','豆粕','22'
insert into kc1 select '2010-03-22','种子入库','半成品','猪预混料','6'
insert into kc1 select '2010-03-25','原种入库','预混料','猪预混料','2'
insert into kc1 select '2010-03-26','原种出库','半成品','豆粕','-6'
insert into kc1 select '2010-03-26','原种入库','销售仓库','玉米','11'
insert into kc1 select '2010-03-26','种子出库','半成品','猪预混料','-1'
insert into kc1 select '2010-03-26','原种入库','原料','豆粕','5'
insert into kc1 select '2010-03-26','原种出库','原料','豆粕','-1'

/* 求2个时间段:2010-03-20至2010-03-26
要得到这样的报表:
库房名称    起始时间       入库      出库     结余数量
kfmc       djrq           zl        zl        zl
半成品     2010-03-20     39        -7        98
销售仓库   2010-03-20     11        0         11
预混料     2010-03-20     2         0         2
原 料     2010-03-20      5         -1        7
*/


备注:根据输入的2个时间参数,按照库房名称分组求和
入库方法:

SQL code
SELECT kfmc,
SUM(zl)AS 入库
FROM kc1 where djlx like '%入库%' group by kfmc

出库方法:

SQL code
SELECT kfmc,
SUM(zl)AS 出库
FROM kc1 where djlx like '%出库%' group by kfmc


SQL code
结余数量:
select kfmc,sum(zl) from kc1 group by kfmc

CREATE TABLE [kc1] ( [djrq] [smalldatetime] NULL , [djlx] [nvarchar] (20), [kfmc] [nvarchar] (50), [hpmc] [nvarchar] (50), [zl] [float] NULL )GO insert into kc1 select '2010-03-20','初始库存','半成品','玉米','11' insert into kc1 select '2010-03-20','初始库存','半成品','豆粕','22' insert into kc1 select '2010-03-20','初始库存','半成品','鱼粉','33' insert into kc1 select '2010-03-21','初始库存','原料','玉米','1' insert into kc1 select '2010-03-21','初始库存','原料','豆粕','2' insert into kc1 select '2010-03-22','原种入库','半成品','玉米','11' insert into kc1 select '2010-03-22','原种入库','半成品','豆粕','22' insert into kc1 select '2010-03-22','种子入库','半成品','猪预混料','6' insert into kc1 select '2010-03-25','原种入库','预混料','猪预混料','2' insert into kc1 select '2010-03-26','原种出库','半成品','豆粕','-6' insert into kc1 select '2010-03-26','原种入库','销售仓库','玉米','11' insert into kc1 select '2010-03-26','种子出库','半成品','猪预混料','-1' insert into kc1 select '2010-03-26','原种入库','原料','豆粕','5' insert into kc1 select '2010-03-26','原种出库','原料','豆粕','-1' select [kfmc],min([djrq]), sum(case when charindex('入库',djlx)>0 then zl else 0 end) '入库', sum(case when charindex('出库',djlx)>0 then zl else 0 end) '出库', sum(zl) zl from kc1 group by [kfmc] kfmc 入库 出库 zl -------------------------------------------------- ----------------------- ---------------------- ---------------------- ---------------------- 半成品 2010-03-20 00:00:00 39 -7 98 销售仓库 2010-03-26 00:00:00 11 0 11 预混料 2010-03-25 00:00:00 2 0 2 原料 2010-03-21 00:00:00 5 -1 7 (4 行受影响)
select isnull([kfmc],'总计') [kfmc],min([djrq]), sum(case when djlx like '%入库%' then zl else 0 end) '入库', sum(case when djlx like '%出库%' then zl else 0 end) '出库', sum(zl) zl from kc1 where [djrq] between '2010-03-20' and '2010-03-26' group by [kfmc] with rollup kfmc 入库 出库 zl -------------------------------------------------- ----------------------- ---------------------- ---------------------- ---------------------- 半成品 2010-03-20 00:00:00 39 -7 98 销售仓库 2010-03-26 00:00:00 11 0 11 预混料 2010-03-25 00:00:00 2 0 2 原料 2010-03-21 00:00:00 5 -1 7 总计 2010-03-20 00:00:00 57 -8 118 (5 行受影响)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: