关于进销存系统的数据组织问题(100分)

  • 主题发起人 主题发起人 lssgj
  • 开始时间 开始时间
L

lssgj

Unregistered / Unconfirmed
GUEST, unregistred user!
在进销存系统中,我使用如下的表结构,如何实现商品明细帐的查询?
1.商品表
商品ID 商品名称 规格型号
1 CPU 芯片 P4 2G

2.入库表
入库批号ID 日期 入库单号 入库数量 商品ID 入库单价
1 2002.1.1 R0001 50 1 1300
2 2002.1.1 R0002 30 1 1200

3.出库表(以"入库批号ID"与入库表进行关联)
出库ID 入库批号ID 日期 出库单号 出库数量 商品ID 销售单价
1 1 2002.1.1 S0001 10 1 1500
2 2 2002.1.2 S0002 10 1 1500

我要由以上表查询生成商品出库入库明细帐,该怎么实现如下所示的查询或视图?

商品ID 日期 出入类型 单据号 入库数量 出库数量 结存数量
1 2002.1.1 入 R0001 50 50
1 2002.1.1 入 R0002 30 80
1 2002.1.1 出 S0001 10 70
1 2002.1.2 出 S0002 10 60

进一步我要查询如下的销售明细表,又该怎么办?

日期 商品ID 单据号 入库单价 销售单价 单位毛利 入库批号ID 出库ID
2002.1.1 1 S0001 1300 1500 200 1 1
2002.1.2 1 S0001 1200 1500 300 2 2

(注:我是为了将出库记录与入库记录之间以入库批号ID进行关联,以便保存销售出库单后
便计算出销售毛利来,所以将入库记录和出库记录分为两个表保存)
 
select * from 商品表
left join 入库表 on 入库表.商品=ID商品表.商品ID
left join 出库表 on 出库表.商品ID=品表.商品ID
 
select 商品ID,日期,出入类型,单据号,入库数量,出库数量,结存数量
from 商品表 where 条件
union
select 商品ID,日期,出入类型,单据号,入库数量,出库数量,结存数量
from 商品表 where 条件
 
SELECT 商品ID,日期,出入类型,单据号,入库数量,出库数量,SUM(CASE WHEN 出入类型='入' THEN 入库数量
WHEN 出入类型='出' THEN -出库数量
END) AS 结存数量 FROM
(SELECT 商品ID,日期,'入' as 出入类型,入库单号 as 单据号,入库数量,0 as 出库数量
FROM 入库表
UNION
SELECT 商品ID,日期,'出' as 出入类型,出库单号 as 单据号,0 as 入库数量,出库数量
FROM 出库表)AS TEMP
GROUP BY 商品ID,日期,出入类型,单据号,入库数量,出库数量
 
orlen 的做法不错,谢谢,我试试,请多多帮助
 
我对orlen的“结存数量”的计算方式不是很满意(在数据量很大时可能会很慢,可否用
存储过程或其他方式实现?请指点
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部