select 编号,属性1,
     isnull((select sum(收数)-sum(发数) from t where 日期<'stratdata'),0) as 上次结存,
     isnull((select sum(收数)-sum(发数) from t where 日期<'endata'),0) as 本次结存,
     isnull((select sum(收数) from t where 日期>='stratdata' and 日期<'endata'),0) as 期间收数,
     isnull((select sum(收数) from t where 日期>='stratdata' and 日期<'endata'),0) as 期间发数
     from t group by 编号,属性1
     
     运行结果,所有上次结存,本次结存,期间收数,期间发数全为一样

解决方案 »

  1.   

    select 编号,属性1,
         isnull((select sum(收数)-sum(发数) from t where 日期<'stratdata'),0) as 上次结存,
         isnull((select sum(收数)-sum(发数) from t where 日期<'endata'),0) as 本次结存,
         isnull((select sum(收数) from t where 日期>='stratdata' and 日期<'endata'),0) as 期间收数,
         isnull((select sum(收数) from t where 日期>='stratdata' and 日期<'endata'),0) as 期间发数
         from t group by 编号,属性1
         你的 日期<'stratdata',日期<'endata'...日期可能有问题,
    建议你先用select 查询试一试