求教:如何求库存SQL语句?救命!!!
现有三个表如下:
入库表(品名,规格,数量,时间,其他)
出库表(品名,规格,数量,时间,其他)
库存表(品名,规格,本期期初库存,本期入库,本期出库,本期库存,其他
其中,入、出库表只录入不删除,库存表是临时表,统计完后随即删除全部记录,如何用SQL语句求出本期期初库存和本期库存?
问题点数:100、回复次数:19Top
1 楼metro()回复于 2004-09-04 21:03:22 得分 0
本期期初库存和本期库存是什么意识?Top
2 楼luke5678()回复于 2004-09-04 21:06:57 得分 0
SELECT 本期期初库存,本期库存 FROM 库存表
Top
3 楼liangjinliang()回复于 2004-09-04 22:34:20 得分 30
select t1.品名规格,t1.本期入库,isnull(t2.本期出库,0) as 本期出库,(t1.本期入库- isnull(t2.本期出库,0)) as 本期库存
from
(select 品名规格,sum(数量) as 本期入库 from
(select 品名+规格 as 品名规格,数量 from 入库表 where 时间 > 时间起点 and 时间 < 时间终点) t
group by 品名规格) t1
left outer join
(select 品名规格,sum(数量) as 本期出库 from
(select 品名+规格 as 品名规格,数量 from 出库表 where 时间 > 时间起点 and 时间 < 时间终点) t
group by 品名规格) t2
on t1.品名规格=t2.品名规格
--至于求期初库存,与求本期库存一样,只不过时间范围不同,求出后,与上面的数据集左外
--连接即可,至于字段[其它],最后连接以下数据集即可
select 品名规格,入库其它,出库其它 from
(select 品名+规格 as 品名规格,其它 as 入库其它 from 入库表) t1
left outer join
(select 品名+规格 as 品名规格,其它 as 出库其它 from 出库表) t2
on t1.品名规格=t2.品名规格
Top
4 楼gumi(网痴)回复于 2004-09-05 10:54:27 得分 0
时间怎么确定?假如以某月为分界点,怎么来实现呢?时间都是日期型数据Top
5 楼Jeff20040819(美丽)回复于 2004-09-07 07:32:17 得分 0
学习,接分Top
6 楼fzhrezin(菜鸟)回复于 2004-09-07 17:22:09 得分 0
你可以写存储过程,如:起初数据、本期销售、本期进货Top
7 楼vzxq(灵感人)回复于 2004-09-07 17:39:29 得分 0
nodTop
8 楼bhy888()回复于 2004-09-09 11:00:11 得分 0
各位,我求的是SQL语句,拜托了,CSDN到底有没有高手啊!Top
9 楼yixi88()回复于 2004-09-09 11:11:16 得分 10
你可以不用“库存表”直接编程运算,如果实在要适用该表,适用联合查询语句把出库、入库表的数据进行相应的计算后写入“库存表”,然后显示该表就行。Top
10 楼wychero(高天)回复于 2004-09-09 11:16:16 得分 0
我以前就是搞库存的,可我不知怎么跟你说。Top
11 楼DreamStrat(梦启动的摇篮…)回复于 2004-09-09 11:36:07 得分 0
"其中,... 库存表是临时表,统计完后随即删除全部记录"
唉 如楼上的所说,不知该怎么说你Top
12 楼DreamStrat(梦启动的摇篮…)回复于 2004-09-09 11:42:17 得分 0
这种系统都不知道是谁设计的,不要怪CSDN没高手,虽然我也处理入门级,但还是要忍不住说两句。
真是辛苦你了
liangjinliang() 的表达的意思应该不错
Top
13 楼missj(ashan)回复于 2004-09-09 14:37:15 得分 0
upTop
14 楼clossc(蛋蛋)回复于 2004-09-09 15:02:33 得分 0
呵呵,天书,liangjinliang()已经表达的很不错了,收藏!
这种东西,只可意会,不可言传的.
俺们同事写的库存SQL,打印出来有40多页,问他啥意思,他自己也不知道...还好,结果是正确的!!
呵呵,小弟,努力吧!!Top
15 楼qizhanfeng(glacier)回复于 2004-09-09 15:11:27 得分 10
写法很多
只是效率不同
可贴到sqlserver数据库开发版
会得到很多答案
Top
16 楼Erice(白雪公猪)回复于 2004-09-09 15:21:35 得分 30
sELECT 品名,规格,isnull((本期库存-b.in_Num+c.out_Num),0) as 本期期初库存,B.IN_NUM AS 本期入库,C.OUT_NUM AS 本期出库,本期库存
FROM 库存表 as a
left join
(select isnull(sum(数量),0) as in_NUm,品名 from 入库表 group by 品名)
as b.品名=a.品名
left join
(select isnull(sum(数量),0) as OuT_NUm,品名 from 出库表 group by 品名)
as c.品名=a.品名
写的简单,,见谅!!Top
17 楼Erice(白雪公猪)回复于 2004-09-09 15:22:33 得分 0
哦,,你的数据库设计有误!!!个人意见,,只供参考Top
18 楼ahgood1223(ahgood)回复于 2004-09-11 15:35:34 得分 10
同意楼上的,入库及出库应该放在一个表里,这样你的问题就好解决多了Top
19 楼zanyzyg(猪油果)回复于 2004-09-11 16:04:32 得分 10
那就分别生成入库,出库,期初,本期的信息,然后关联一下好了.
select 结果信息 from
(
select 出库信息
select 入库信息
......
)
.........................
个人意见Top




