select 销售日期,产品代码
,sum(销售数量)
,(select sum(入库数量) 
    from 入库表 
   where 产品代码 = T.产品代码 
         and datediff(day,入库日期,T.销售日期) = 0
  )
,(select sum(产品库存数量)
    from 产品表 
   where 产品代码 = T.产品代码)
  + 
  (select sum(入库数量) 
    from 入库表 
   where 产品代码 = T.产品代码 
         and datediff(day,入库日期,T.销售日期) >= 0
  )
  -
  (select sum(销售数量) 
    from 销售表 
   where 产品代码 = T.产品代码 
         and datediff(day,销售日期,T.销售日期) >= 0
  )    from 销售表 T
group by 销售日期,产品代码

解决方案 »

  1.   


      select (case when T.销售日期 is null then 入库表.入库日期 else T.销售日期 end)
             ,产品表.产品代码
             ,sum(T.销售数量)
             ,sum(入库表.入库数量)
             ,sum(产品库存数量)
      + 
      (select sum(入库数量) 
        from 入库表 
       where 产品代码 = T.产品代码 
             and datediff(day,入库日期,T.销售日期) >= 0
      )
      -
      (select sum(销售数量) 
        from 销售表 
       where 产品代码 = T.产品代码 
             and datediff(day,销售日期,T.销售日期) >= 0
      )
                 from 销售表 T full outer join 入库表 
                    on T.产品代码 = 入库表.产品代码 
                       and datediff(day,T.销售日期,入库表.入库日期) = 0        right join 产品表 on 产品表.产品代码 = T.产品代码
    group by  (case when 销售表.销售日期 is null then 入库表.入库日期 else 销售表.销售日期 end),产品表.产品代码
      

  2.   

    日期 应该是 销售表 和 入库表 里的所有日期(union)