CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

求教:如何求库存SQL语句?救命!!!

楼主bhy888()2004-09-04 20:51:56 在 MS-SQL Server / 应用实例 提问

现有三个表如下:  
  入库表(品名,规格,数量,时间,其他)  
  出库表(品名,规格,数量,时间,其他)  
  库存表(品名,规格,本期期初库存,本期入库,本期出库,本期库存,其他  
  其中,入、出库表只录入不删除,库存表是临时表,统计完后随即删除全部记录,如何用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

相关问题

  • 高分求救:SQL2000数据库存储过程和视图如何导出SQL语句,急急急!!!
  • sql语句如何写?
  • help!如何写SQL语句?
  • SQL语句如何实现......
  • 如何写SQL语句
  • 如何加sql语句?
  • SQL语句如何写?
  • 如何实现?sql语句
  • 如何优化SQL语句?
  • 如何执行SQL语句

关键词

  • 语句
  • 数据
  • 信息
  • sql
  • 品名
  • 出库
  • 库存
  • 入库
  • 规格
  • 表

得分解答快速导航

  • 帖主:bhy888
  • liangjinliang
  • yixi88
  • qizhanfeng
  • Erice
  • ahgood1223
  • zanyzyg

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo