SELECT * FROM #T,#TT WHERE #T.A =#TT.A AND COALESCE(#TT.B,0) - #T.B>0

解决方案 »

  1.   

    SELECT * FROM #T left join #TT on #T.A=#TT.A where isnull(#TT.B,0) - #T.B>0
      

  2.   

    改为: 
    SELECT * FROM #T left join #TT on  #T.A=#TT.A
    WHERE COALESCE(#TT.B,0) - #T.B>0有两点说明: 
    1.这是三值逻辑的原因, 不是COALESCE的原因, 在用你的语句查询出的NULL值不是#TT中的值, 而是因为左链接产生的NULL值.
    2.*= 左链接和left JOin 的区别: 前着是先将所有的WHERE条件对相关table筛选后再链接, 而后着是先左链接后再对链接的结果进行where 条件筛选!
      

  3.   

    谢谢楼上各位, cxingh(游牧民族),pbsql(风云) 正解