select top 10 a.name,SUM(isnull(b.sl,0)) FROM a left JOIN b ON a.id = b.topid where b.lx <> '入' group by a.name order by sum(b.sl);

解决方案 »

  1.   

    谢谢回答,不过我试过了,用b.lx <> '入'的话,结果只是
    红西装 5件
      

  2.   

    select top 10 a.name,SUM(isnull(b.sl,0)) FROM a left JOIN b ON a.id = b.topid where isbull(b.lx,'出') = '出' group by a.name order by sum(b.sl);
      

  3.   

    select top 10 a.name,SUM(case b.lx when 'I' then 0  else isnull(b.sl,0) end ) FROM a left JOIN b ON a.id = b.topid  group by a.name order by sum(b.sl)
      

  4.   

    name                   
    ---------- ----------- 
    ?上衣        0
    黑上衣        0
    ?西?        5
      

  5.   

    谢谢大家,我不知道你们的答案是否正确我没有试。在百度有人给出了正确的结果
    select [name],sum(isnull([sl],0)) from a left join (select * from b where lx='出') c on a.id=c.topid 
    group by [name] order by sum(isnull([sl],0))
    其中我只用到了(select * from b where lx='出')就解决了。
    再次谢谢大家。