select 商品代码,出货日期,count(*) from 出货表 where 出货日期 between '开始时间' and '结束时间' group by 商品代码,出货日期

解决方案 »

  1.   

    select 
        商品代码,
        出货日期,
        出货次数=count(*)
    from 
        出货表
    where 
        出货日期 between '开始时间' and '结束时间' 
    group by 
        商品代码,出货日期
      

  2.   

    select 商品代码,sum(num) from  
    (select 商品代码,出货日期,count(*) as num from 出货表 where 出货日期 between '开始时间' and '结束时间' group by 商品代码,出货日期) T group by 商品代码
      

  3.   

    select a.商品代码,a.出货时间,count(*) from 出货表 a left join 库存表 b on a.商品代码=b.商品代码
    where 出货日期 between 开始 and 结束
    group by a.商品代码,出货时间
      

  4.   

    declare @startDate datetime
            ,@endDate  datetime
    select A.商品代码
           ,sum(出货次数) as '出货次数'from 库存表 A
    left join (
                 select 商品代码
                        ,货柜代码
                        ,count(1) as '出货次数'
                 from 出货表
                 where 出货日期 between @startDate and @endDate
                 group by 商品代码,货柜代码
              )B on A.商品代码=B.商品代码 
                    and A.货柜代码=B.货柜代码
    group by A.商品代码
    order by A.商品代码
      

  5.   

    declare @startDate datetime   --开始时间
            ,@endDate  datetime   --结束时间
    --查询
    select A.商品代码
           ,isnull(sum(出货次数),0) as '出货次数'from 库存表 A
    left join (
                 select 商品代码
                        ,货柜代码
                        ,count(1) as '出货次数'
                 from 出货表
                 where 出货日期 between @startDate and @endDate
                 group by 商品代码,货柜代码
              )B on A.商品代码=B.商品代码 
                    and A.货柜代码=B.货柜代码
    group by A.商品代码
    order by A.商品代码
      

  6.   

    各位的都没有错,可是我是要写成一个视图,我的查询是这样的模式(select * from 视图)
    比如已知商品代码和时间在“2005/01/27”、“2005/12/27”之间的数据,假如在这个时间内此商品没有出货,那么次数是零,查询的结果需要出货的商品代码,商品所在的货柜,出货量,库存量等信息
      

  7.   

    写存储过程或函数吧,灵活性好点
    if exists(select 1 from sysobjects where id=object_id(N'p_getResult') and xtype=N'F'
          drop function f_getResult
    go
    create function f_getResult(@goodid varchar(10),@stDate datetime,@enDate datetime)
    returns table
    as
     return(select 商品代码=@goodid
                  ,a.货柜代码
                  ,a.出货次数=(select count(商品代码) from 出货表 b
                               where b.商品代码=@goodid 
                                 and b.货柜代码=a.货柜代码 
                                 and b.出货日期 between @stDate and @endDate)
                  ,出货数量=(select sum(出货数量) from 出货表 b
                               where b.商品代码=@goodid 
                                 and b.货柜代码=a.货柜代码 
                                 and b.出货日期 between @stDate and @endDate)
                  ,a.库存数量 
             from 库存表 a
             where a.商品代码=@goodid
    )
    go
      

  8.   

    CREATE VIEW dbo.vShipment AS
    select a.商品代码,a.货柜代码,a.出货数量,b.库存数量 from
    出货表 a left join 库存表 b on a.商品代码=b.商品代码 and a.货柜代码=b.货柜代码
    where a.出货日期>=cast('20050127'as datetime) and a.出货日期<cast('20051228'as datetime)
    --执行语句
    select * from vShipment
      

  9.   

    运行
    select * from dbo.f_getResult('商品代码','2005/01/27','2005/12/27')
    即可
      

  10.   

    是啊,楼主,你还是用procedure 或 function吧
      

  11.   

    select 商品代码,次数
    from (select  商品代码,sum(库存数量) as 库存数量 from 库存表 group by 商品代码) 库存表
    right join (select 商品代码,sum(出货数量) as 出货数量,sum(次数) as 次数 from (
    select 商品代码,sum(出货数量) as 出货数量,1 as 次数 from 出货表 group by 商品代码,出货日期) 出货表
    group by 商品代码) 出货表