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

大家看看,我面试时招聘单位所出的面试题,回答正确的有分哦!```````````````````````

楼主Toti(连自己都承认不行,还有什么话好说!)2005-11-21 13:21:31 在 MS-SQL Server / 基础类 提问

以下是一个商品的进销存数据表  
        发生业务       发生数量         发生时间  
            进货                 10               2003/02/05  
            销售                 -5               2003/02/08  
            进货                 20               2003/02/10  
            进货                 5                 2003/02/15  
            销售                 -15             2003/02/18  
      现在SQLSERVER数据库中,要求通过数据库计算(要求用函数,存储过程),返回以下结果  
    期初库存         发生业务       发生数量               发生时间           期末库存  
          0                         进货                 10               2003/02/05               10  
          10                       销售                 -5               2003/02/08               5  
          5                         进货                 20               2003/02/10               25  
          25                       进货                 5                 2003/02/15               30  
          30                       销售                 -15             2003/02/18               15  
  问题点数:50、回复次数:10Top

1 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-11-21 13:30:49 得分 15

select  
          期初库存=isnull((select   sum(发生数量)   from   表   where   发生时间<a.发生时间),0),  
          a.发生业务,  
          a.发生数量,  
          a.发生时间,  
          期末库存=(select   sum(发生数量)   from   表   where   发生时间<=a.发生时间)  
  from  
          表   a  
  order   by  
          a.发生时间Top

2 楼jxdjxd1111(qqq)回复于 2005-11-21 13:52:28 得分 5

子陌兄:  
  如果同一天有两笔进货就会出问题啊?Top

3 楼windbey(北风)回复于 2005-11-21 14:09:56 得分 0

markTop

4 楼wangdehao(找找找(现在很幸福))回复于 2005-11-21 14:19:23 得分 15

select   id=identity(int,1,1),*   into   #t   from     表  
   
  select  
          期初库存=isnull((select   sum(发生数量)   from   表   where   id<a.id),0),  
          a.发生业务,  
          a.发生数量,  
          a.发生时间,  
          期末库存=(select   sum(发生数量)   from   表   where   id<=a.id)  
  from  
          表   a  
  order   by  
          a.id  
   
  ---思路不变,加一个id列,如果发生时间是一个完整的时间也不会有问题的Top

5 楼put2006(冷眼螃蟹)回复于 2005-11-21 14:20:02 得分 5

时间肯定要修改,要不燃谁知道日期是同一天的几笔谁先谁后啊?Top

6 楼jxdjxd1111(qqq)回复于 2005-11-21 14:34:07 得分 0

TO:     wangdehao(找找找)  
  试过了,还是不行Top

7 楼xueguang(xg)回复于 2005-11-21 15:16:42 得分 5

--麻烦点  
  set   nocount   on  
  declare   @a   table(发生业务   varchar(10),发生数量   int,发生时间   char(10))  
   
  insert   @a   select   '进货',10   ,'2003/02/05'  
  insert   @a   select   '销售',-5   ,'2003/02/08'  
  insert   @a   select   '进货',20   ,'2003/02/10'  
  insert   @a   select   '进货',5     ,'2003/02/15'  
  insert   @a   select   '销售',-15,'2003/02/18'  
   
  declare   @b   table(id   int   identity(1,1),期初库存   int,发生业务   varchar(10),发生数量   int,发生时间   char(10),期末库存   int)  
   
   
  insert   @b(发生业务,发生数量,发生时间)   select   发生业务,发生数量,发生时间   from   @a   order   by   发生时间  
   
   
  update   @b   set   期初库存=0,期末库存=发生数量   where   id=1  
  update   @b   set   期初库存=(select   期末库存   from   @b   where   id=1)   where   id=2  
   
  declare   @i   int  
  set   @i=2  
  while   @i<=(select   max(id)   from   @b)   begin  
  update   @b   set   期末库存=期初库存+发生数量   where   id=@i  
  update   @b   set   期初库存=(select   期末库存   from   @b   where   id=@i)   where   id=@i+1  
  set   @i=@i+1  
  end  
  set   nocount   off  
  select   期初库存,发生业务,发生数量,发生时间,期末库存   from   @b  
   
  /*结果  
  期初库存       发生业务               发生数量         发生时间         期末库存                  
  -----------   ----------   -----------     ----------   -----------    
  0                       进货                   10                     2003/02/05   10  
  10                     销售                   -5                     2003/02/08   5  
  5                       进货                   20                     2003/02/10   25  
  25                     进货                   5                       2003/02/15   30  
  30                     销售                   -15                   2003/02/18   15  
   
  (所影响的行数为   5   行)  
  */Top

8 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-11-21 16:52:51 得分 0

select   identity(int,1,1)   as   id,*   into   #T   from   表  
   
  select  
          期初库存=isnull((select   sum(发生数量)   from   #T   where   发生时间<=a.发生时间   and   id<a.id),0),  
          a.发生业务,  
          a.发生数量,  
          a.发生时间,  
          期末库存=(select   sum(发生数量)   from   #T   where   发生时间<=a.发生时间   and   id<=a.id)  
  from  
          #T   a  
  order   by  
          a.发生时间  
   
  drop   table   #TTop

9 楼Toti(连自己都承认不行,还有什么话好说!)回复于 2005-11-21 17:08:38 得分 0

wangdehao(找找找)    
  =========================  
   
  加一个id列,如果发生时间是一个完整的时间也不会有问题的,为什么???????????????Top

10 楼zhouhaihe()回复于 2005-11-22 11:19:48 得分 5

 
  set   nocount   on  
  declare   @a   table(发生业务   varchar(10),发生数量   int,发生时间   char(20))  
   
  insert   @a   select   '进货',10   ,'2003-02-05'  
  insert   @a   select   '销售',-5   ,'2003-02-08   15:15:00'  
  insert   @a   select   '进货',20   ,'2003-02-08   09:00:00'  
  insert   @a   select   '进货',5     ,'2003-02-08   12:00:00'  
  insert   @a   select   '销售',-15,'2003-02-18'  
   
  select   identity(int,1,1)   as   id,*   into   #T   from   @a   order   by   发生时间  
   
  select  
          期初库存=isnull((select   sum(发生数量)   from   #T   where   发生时间<=a.发生时间   and   id<a.id),0),  
          a.发生业务,  
          a.发生数量,  
          a.发生时间,  
          期末库存=(select   sum(发生数量)   from   #T   where   发生时间<=a.发生时间   and   id<=a.id)  
  from  
          #T   a  
  order   by  
          a.发生时间  
   
  drop   table   #T  
   
  Top

相关问题

  • 【转贴】可口可乐公司招聘员工面试题目。
  • 100分面试题考一考大家,有正确结果即结贴
  • 关于招聘面试
  • 究竟招聘程序员面试出拿来题目比较合理?
  • 面试问题?
  • IBM面试题!
  • 面试题目……
  • 面试题
  • 面试问题?
  • 面试题??

关键词

  • 销售
  • 数据库
  • 业务
  • 进货
  • 面试
  • 期初库存
  • 发生
  • 业务发生数量
  • 要求
  • 时间

得分解答快速导航

  • 帖主:Toti
  • libin_ftsafe
  • jxdjxd1111
  • wangdehao
  • put2006
  • xueguang
  • zhouhaihe

相关链接

  • SQL Server类图书

广告也精彩

反馈

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