select i.cinvcode,i.cinvname,i.cinvstd ,
c.iQuantity ,
max(r.ddate),
datediff(day,max(r.ddate),getdate())
from Inventory i
left join CurrentStock c on i.cinvcode=c.cinvcode
left join RdRecords rf on rf.cinvcode=i.cinvcode
left join RdRecord r on r.id=rf.id
group by i.cinvcode,i.cinvname,i.cinvstd ,
c.iQuantity 这sql有什么问题
查出来的结果3800多,但Inventory 这个表就3300多数据,怎么多了呢

解决方案 »

  1.   

    加个sum就好了
    select i.cinvcode,i.cinvname,i.cinvstd ,
    sum(c.iQuantity) ,
    max(r.ddate) ,
    datediff(day,
    max(r.ddate),getdate()) 
    from Inventory i
    left join CurrentStock c on i.cinvcode=c.cinvcode
    left join RdRecords rf on rf.cinvcode=i.cinvcode
    left join RdRecord r on r.id=rf.id
    group by i.cinvcode,i.cinvname,i.cinvstd 
    max(r.ddate),这块,我想,
    select max(r.ddate) from RdRecord r where brdflag=0
    当brdflag=0有值的时候用max(r.ddate)
    当brdflag=0没值的时候用min(r.ddate)
    select min(r.ddate) from  RdRecord r where brdflag=1
    这sql怎么应该怎么写,不知道说明白没
      

  2.   

    select i.cinvcode,i.cinvname,i.cinvstd ,
    sum(c.iQuantity) ,
    max(r.ddate) ,
    datediff(day,case when brdflag=0 then max(r.ddate) else min(r.ddate) end,getdate()) from Inventory i
    left join CurrentStock c on i.cinvcode=c.cinvcode
    left join RdRecords rf on rf.cinvcode=i.cinvcode
    left join RdRecord r on r.id=rf.id就是这个意思,不过有错误,应该怎么改下
    group by i.cinvcode,i.cinvname,i.cinvstd 
      

  3.   

    select i.cinvcode,i.cinvname,i.cinvstd ,
    sum(c.iQuantity) ,
    max(r.ddate) ,
    datediff(day,case when r.brdflag=0 then max(r.ddate) else min(r.ddate) end,getdate()) from Inventory i
    left join CurrentStock c on i.cinvcode=c.cinvcode
    left join RdRecords rf on rf.cinvcode=i.cinvcode
    left join RdRecord r on r.id=rf.id
    group by i.cinvcode,i.cinvname,i.cinvstd,r.brdflag哪位知道这sql应该怎么改下,这sql有问题,谢谢诶