看看將每個元素都加上isnull()
where ((isnull(T04,0)+isnull(X01,0)+isnull(X02,0)+isnull(X03,0)+isnull(X04,0))<>0)
另外,你select 里的結存數 最好也寫成這樣

解决方案 »

  1.   

    where ((T04+X01+X02+X03+X04)<>0)
    这样写会出问题的,只要有一个值为null,所有的值相加后都为null因为where 语句不和null记录做比较,所以只要为null的记录都不出来
      

  2.   

    拼接字符串,如果不加isnull的判断只要出现null那么整个字符串就变成null。
      

  3.   

    謝謝,可以了,按
    where ((isnull(T04,0)+isnull(X01,0)+isnull(X02,0)+isnull(X03,0)+isnull(X04,0))<>0)
    這種方法,但還是奇怪,在上面select 時,T04,X01,X02,X03,X04我就有加isnull來判斷了,難道說上面select的isnull會無效?
      

  4.   

    “上面select的isnull會無效”,不會,那個isnull還是有效,只是你上面的是在select中做判斷,下面是在where中做判斷,相互間沒關係的。
      

  5.   

    謝謝,了解了,看來還是sql基礎知識不踏實呀
      

  6.   

    isnull((T04+X01-X02+X03),0) as 結存數上面select的也分開寫isnull(T04)+....否則結果不對的