在我做的进销存系统中有一个日结表:
比如:我的库存项目中有200种商品,每天日结时在日结表中会新添加200条记录,这200条记录是200种商品当天的进销存情况(包括当天的期初和期末余额m入库、出库情况,并且在日结时每条记录都有当天的日期)。
要求:用户给出一个时间段,如:2004-2-6 到 2004-3-6 ,根据这个时间段列出这200种商品在此期间的期初、期末余额、入库、出库等信息。用sql语句如何完成?另注:请问我的这种日结方法是否合理,请给出建议!表结构如下:
商品编号 
商品名称 
单位
期初余额
期末余额
入库量
出库量
日结时间

解决方案 »

  1.   

    select * from Table1 
    where "日结时间" between "2004-2-6"and "2004-3-6'如果没理解错的话,应该是这样
      

  2.   

    reludson大哥可不可以给出代码让我参考?
      

  3.   

    使用分组 
    Select sum(a) a,... from Tbl1 
    where between(d1,d2)
    group by (类别)
    order by (类别)
    仅供参考。
      

  4.   

    第一次到csdn提问就遭冷场,太让我失望了!!!
      

  5.   

    select 商品编号 
    商品名称   期初余额 期末余额 入库量 出库量 from Table1 
    where "日结时间" between "2004-2-6"and "2004-3-6'
      

  6.   

    ==第一次到csdn提问就遭冷场,太让我失望了!!!==
    **没有冷场嘛,大家不是在想办法吗?下面的代码可能不太成熟,不过你可以试试能否得到你要的结果。
    SELECT 商品编号, 商品名称, 单位, SUM(期初余额), SUM(期末余额), SUM(入库量), SUM(出库量)
    FROM [日结表]
    WHERE 日结时间 BETWEEN '2004-2-6' and '2004-3-6'
    GROUP BY (商品编号, 商品名称, 单位)
    ORDER BY 商品编号
      

  7.   

    楼上的大哥:
    SUM(期初余额), SUM(期末余额)?
    期初余额和期末余额是不能相加的,期初余额应该取2004-2-6日的期初余额,期末余额应该取2004-3-6日的期末余额!
      

  8.   

    SELECT 商品编号, 商品名称,单位,
              (SELECT 期初余额
             FROM 日结表 t
             WHERE t.商品编号 = 商品编号 AND 日结时间 = '2004-2-6') AS 期初余额,
              (SELECT 期末余额
             FROM 日结表 t
             WHERE t.商品编号 = 商品编号 AND 日结时间 = '2004-3-6') AS 期末余额, SUM(入库量) AS 入库量, SUM(出库量) 
          AS 出库量
    FROM 日结表
    WHERE (日结时间 BETWEEN '2004-2-6' AND '2004 - 3 - 6 ')
    GROUP BY 商品编号, 商品名称,单位
    ORDER BY BH
      

  9.   

    ORDER BY 商品编号楼主给分吧!
      

  10.   

    不行呀,我用的是access,它提示:"子查询最多能返回一条记录",然后没有显示结果!
    是不是哪有问题?
      

  11.   

    期初、期末余额、入库、出库
    SELECT A..商品编号, A.商品名称, A.单位, B.期初余额, C.期末余额, A.SUM(入库量), A.SUM(出库量)
    FROM  日结表 A,日结表 B,日结表 C
    WHERE A.日结时间 BETWEEN '2004-2-6' and '2004-3-6'
      AND A.商品编号 = B.商品编号 AND B.日结时间 = '2004-2-6'
      AND A.商品编号 = C.商品编号 AND C.日结时间 = '2004-2-6'
    GROUP BY (A.商品编号, A.商品名称, A.单位,B.期初余额, C.期末余额)
    ORDER BY A.商品编号
      

  12.   

    同意 lwk_hlj(阿凯(CSDN第一铁公鸡横空出世)) 
      

  13.   

    我用SQL Server 没有问题!
      

  14.   

    (SELECT 期初余额
             FROM 日结表 t
             WHERE t.商品编号 = 商品编号 AND 日结时间 = '2004-2-6') AS 期初余额,
              (SELECT 期末余额
             FROM 日结表 t
             WHERE t.商品编号 = 商品编号 AND 日结时间 = '2004-3-6') AS 期末余额,以上两个子查询有问题,它返回了所有商品的期初和期末余额(子查询不允许返回多个值),怎样才能让它返回当前记录的期初和期末余额?
      

  15.   

    SELECT [xfxm_bm], [xfxm_mc], [xfxm_jjdw], (SELECT xfxm_qcye  FROM xfxm_day t  WHERE t.xfxm_bm = b.xfxm_bm AND xfxm_pcsj = '2004-9-9') AS qcye, (SELECT xfxm_qmye  FROM xfxm_day t  WHERE t.xfxm_bm =b.xfxm_bm AND xfxm_pcsj = '2004-9-11') AS qmye, SUM([xfxm_rk]) AS rk, SUM([xfxm_ck]) AS ck
    FROM xfxm_day b
    WHERE (xfxm_pcsj Between '9/9/2004' And '9/11/2004')
    GROUP BY [xfxm_bm], [xfxm_mc], [xfxm_jjdw]
    ORDER BY [xfxm_bm];
    谢谢lwk_hlj(阿凯(CSDN第一铁公鸡横空出世))和其它热心人,你的方法如果只有一种商品还行,
    我稍做修改, FROM xfxm_day b ,在子查询中引用t.xfxm_bm=b.xfxm_bm就可以了!
    我第一次发贴,怎样给分呀?
      

  16.   

    select a.商品编号,a.商品名称,a.单位,a.入库量,a.出库量,b.期初余额,c.期末余额
    from
    (SELECT 商品编号, 商品名称,单位,SUM(入库量) AS 入库量, SUM(出库量) AS 出库量
    FROM ttemp
    WHERE 日结时间 BETWEEN '2004-01-01 01:00' AND '2004-01-02 24:00'
    GROUP BY 商品编号,商品名称,单位) a left join(SELECT 商品编号, MIN(期初余额) AS 期初余额
    FROM TTemp
    WHERE (日结时间 =
              (SELECT MIN(日结时间) AS 日结时间
             FROM ttemp
             WHERE 日结时间 BETWEEN '2004-01-01 01:00' AND '2004-01-02 24:00'))
    GROUP BY 商品编号) b on a.商品编号=b.商品编号 left join
    (SELECT 商品编号, MIN(期末余额) AS 期末余额
    FROM TTemp
    WHERE (日结时间 =
              (SELECT MAX(日结时间) AS 日结时间
             FROM ttemp
             WHERE 日结时间 BETWEEN '2004-01-01 01:00' AND '2004-01-02 24:00'))
    GROUP BY 商品编号) c on a.商品编号=c.商品编号
    此语句在sql2000查询分析中调试通过。
      

  17.   

    succeese() 的方法也不错
    不知道和lwk_hlj的方法哪个效率会更高一些?
      

  18.   

    **lwk_hlj(阿凯(CSDN第一铁公鸡横空出世))、succeese()和td427(3月19)的方法我在SQL中验证失败了,大家以后给答案的时候请尽量将表名等书写得提问者的一致,否则验证的时候是没有人愿意更改你的那些随意的写法的,结果只能是失败。
    我建议:要么说思想,要么写代码就尽量写对。
      

  19.   

    SELECT 商品编号, 商品名称, 单位,
    (select 期初余额 from a where 日结时间='2004-2-6') as 期初余额,
    (select 期初余额 from a where 日结时间='2004-3-6') as 期末余额,
    SUM(入库量) as 入库量, 
    SUM(出库量) as 出库量
    FROM
      (select * from 日结表
          where 日结时间
          BETWEEN '2004-2-6' and '2004-3-6' 
          order by   商品编号,商品名称,单位
          GROUP BY (商品编号, 商品名称, 单位)
          ORDER BY A.商品编号
       ) A
      

  20.   

    creativepeter(头皮屑) 
    那你的意思,你不要做程序了,全给别人做吧!
      

  21.   

    大家讨论的真热闹!!!第一次来没想到csdn的同专们都这么热心!!!我太感动了