分组求和,行转列

求存储过程,或者SQL语句。谢谢大家!
单据日期,单据类型,库房名称,货品名称,重量
XML code
 
   
djrq djlx kfmc hpmc zl 2010-03-20 初始库存 半成品 玉米 11 2010-03-20 初始库存 半成品 豆粕 22 2010-03-20 初始库存 半成品 鱼粉 33 2010-03-21 初始库存 原料 玉米 1 2010-03-21 初始库存 原料 豆粕 2 2010-03-22 原种入库 半成品 玉米 11 2010-03-22 原种入库 半成品 豆粕 22 2010-03-22 种子入库 半成品 猪预混料 6 2010-03-22 种子入库 半成品 蛋禽预混料 4 2010-03-22 种子出库 半成品 玉米 -1 2010-03-22 种子出库 半成品 种禽预混料 -2 2010-03-22 丸化后出库 半成品 鱼粉 -2 2010-03-25 初始库存 预混料 猪预混料 1 2010-03-25 原种入库 预混料 猪预混料 2 2010-03-25 原种入库 半成品 猪预混料 2 2010-03-26 丸化后入库 原料 玉米 1 2010-03-26 原种入库 销售仓库 玉米 11 2010-03-26 原种出库 销售仓库 豆粕 -2
SQL code
 
   
求:某个时间段内变化情况,需要报表如下:‘ 2010 - 03 - 20 ’——‘ 2010 - 03 - 26 ’ 库房名称 起始时间 入库 出库 结余数量 -- ------------------------------------------------------- 半成品 2010 - 03 - 20 sum (?) sum (?) sum (zl) 原料 2010 - 03 - 20 sum (?) sum (?) sum (zl) 预混料 2010 - 03 - 20 sum (?) sum (?) sum (zl) 销售仓库 2010 - 03 - 20 sum (?) sum (?) sum (zl) ... 合计 ? ? 解释:入库,出库都是求时间段开始时间至结束时间的和。结余是求截止时间的结余。例如上面就是求2010 - 03 - 26的结余。
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 ' select [ 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 ] 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 行受影响)
http://topic.csdn.net/u/20100329/21/1450a994-ba1c-475a-a73d-7371d5c25021.html?535654092

转载于:https://www.cnblogs.com/ghd2004/articles/1700313.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值