VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1843|回复: 15

求物流仓库管理的SQL语句?谢谢大家.

[复制链接]

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-19 20:40:01 | 显示全部楼层 |阅读模式


/*如何生成库存明细帐和库存盘点表*/

--表结构

create table test --出入库表
(
id int identity(1,1), --主键
货物类别  varchar(20),
货物名称  varchar(20),
货物规格  varchar(20),
货物价格  money,
出入库日期 datetime,
数量  int,
单据编号 varchar(20),
出入库状态 char(1),--1代表货物入库,0代表货物出库,2代表出库退货
领用部门 varchar(20),
领用人 varchar(20)
)
--以下是入库数据
insert into test select 'a类','a1','1*2',1000,'2007-1-1',10,'rk-1','1',null,null
insert into test select 'a类','a1','1*2',1500,'2007-1-1',15,'rk-2','1',null,null
insert into test select 'a类','a2','1*3',2000,'2007-1-1',20,'rk-3','1',null,null

--以下是出库数据

insert into test select 'a类','a1','1*2',1000,'2007-1-1',5,'ck-1','0','部门1','张三'
insert into test select 'a类','a1','1*2',1500,'2007-1-1',10,'ck-2','0','部门1','张三'
insert into test select 'a类','a2','1*3',2000,'2007-1-1',10,'ck-3','0','部门1','张三'

--以下是出库退货数据


insert into test select 'a类','a1','1*2',1000,'2007-1-1',1,'tk-1','2','部门1','张三'
insert into test select 'a类','a1','1*2',1500,'2007-1-1',2,'tk-2','2','部门1','张三'
insert into test select 'a类','a2','1*3',2000,'2007-1-1',3,'tk-3','2','部门1','张三'


select * from test
drop table test
/*
要求得到以下两种格式的库存帐
1.货物出入库明细

货物类别  货物名称  货物规格   货物价格   入库单据号  入库数量  入库金额   出库单据号  出库数量  出库金额  退库单据号  退库数量  退库金额  领用部门  领用人   日期     结余数量  结余金额   
a类          a1       1*2       1000       rk-1       10        10000      null       0         0        null        0          0     null     null    2007-1-1  10       10000
a类       a1       1*2       1500       rk-2       15        22500      null       0         0        null        0          0     null     null    2007-1-1  15       22500
a类       a2       1*3       2000       rk-3       20        40000      null       0         0        null        0          0     null     null    2007-1-1  20       40000

a类       a1       1*2       1000       null       0         0          ck-1       5         5000     null        0          0     部门1    张三    2007-1-1   5        5000
a类       a1       1*2       1500       null       0         0          ck-2       10       15000     null        0          0     部门1    张三    2007-1-1   5        7500
a类       a2       1*3       2000       null       0         0          ck-3       10       20000     null        0          0     部门1    张三    2007-1-1   10       20000

a类       a1       1*2       1000       null       0         0          null       0         0        tk-1        1        1000    部门1    张三    2007-1-1   6        6000
a类       a1       1*2       1500       null       0         0          null       0         0        tk-2        2        3000    部门1    张三    2007-1-1   7        10500
a类       a2       1*3       2000       null       0         0          null       0         0        tk-3        3        6000    部门1    张三    2007-1-1   13       26000     


2.货物库存盘点

货物类别    货物名称   货物规格    货物价格    库存结余数量   库存结余金额   日期

a类         a1         1*2        1000        6             6000          2007-1-1

a类         a1         1*2        1500        7             10500         2007-1-1

a类         a2         1*3        2000        13            26000         2007-1-1   
*/

/*

说明:

货物出入库明细帐能够按照日期段进行查询
货物库存盘点在任何一天都能得到库存的准确数字.比如,2007-1-2这一天没有出入库记录,那么在2007-1-2进行
查询的时候,也能够得出以上报表数据

*/
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-27 22:00:02 | 显示全部楼层
--1
select 货物类别, 货物名称, 货物规格, 货物价格,
入库单据号=case when 出入库状态=1 then 单据编号 end, 入库数量=case when 出入库状态=1 then 数量 end, 入库金额=case when 出入库状态=1 then 货物价格*数量 end,
出库单据号=case when 出入库状态=0 then 单据编号 end,  出库数量=case when 出入库状态=0 then 数量 end,  出库金额=case when 出入库状态=0 then 货物价格*数量 end,
退库单据号=case when 出入库状态=2 then 单据编号 end,   退库数量=case when 出入库状态=2 then 数量 end,    退库金额=case when 出入库状态=2 then 货物价格*数量 end,
领用部门,  领用人,  日期=出入库日期, 结余数量=数量, 结余金额=货物价格*数量
from test as A
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-27 22:18:01 | 显示全部楼层
退貨的结余数量, 结余金额是如何算出來的?
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-28 07:45:01 | 显示全部楼层
--2
select 货物类别, 货物名称, 货物规格, 货物价格, 库存结余数量=sum(case when 出入库状态=0 then -数量 else 数量  end),
库存结余金额=sum(case when 出入库状态=0 then -数量 else 数量  end)*货物价格, 日期=max(出入库日期)
from test
group by 货物类别, 货物名称, 货物规格, 货物价格
--result
货物类别                 货物名称                 货物规格                 货物价格                  库存结余数量      库存结余金额                日期                                                     
-------------------- -------------------- -------------------- --------------------- ----------- --------------------- ------------------------------------------------------
a类                   a1                   1*2                  1000.0000             6           6000.0000             2007-01-01 00:00:00.000
a类                   a1                   1*2                  1500.0000             7           10500.0000            2007-01-01 00:00:00.000
a类                   a2                   1*3                  2000.0000             13          26000.0000            2007-01-01 00:00:00.000

(3 row(s) affected)
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-28 11:18:01 | 显示全部楼层
fanfan1980
-------------------------------------
出库退货的结余数=上次的结余数+退货数

其实出库退货就是再入库的过程.
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-28 14:00:02 | 显示全部楼层
第一個問題你給的结余数量是否有問題?
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-28 16:18:02 | 显示全部楼层
fanfan1980
--------------------------------
第一个问题的结余数量没有问题,其实第一个问题的结余数与第二个问题的结余数是一样的.

都是6,7,13
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-28 16:54:01 | 显示全部楼层
入庫和出庫的结余数量?
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-28 20:09:01 | 显示全部楼层
整个明细帐的过程是按照批次走的,也就是按照test表里面的id列递增下来的.

结余数量=(入库数量 + 退库数量)-出库数量
回复

使用道具 举报

0

主题

7

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-28 20:45:02 | 显示全部楼层
哈哈,看会计的帐单设计
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表