SELECT '01办公' code,isnull(md,0) md FROM #tmp WHERE ccode IN ('550104','550205')
如上述查询结果,当源表#tmp中没有符合检索条件的记录时,我想得到的结果是
01办公,0
而不是得出空行结果,我这条语句得出的是空集。

解决方案 »

  1.   

    这样子没啥意义吧~!
    SELECT '01办公' code,isnull((select md FROM #tmp WHERE ccode IN ('550104','550205')),0) md
    ???
      

  2.   


    SELECT '01办公' code,isnull(md,0) md FROM #tmp WHERE ccode IN ('410505','550104','550205') union
    SELECT '02交通', md FROM #tmp WHERE ccode IN ('410507','550105','550208')union
    SELECT '03差旅' ,md FROM #tmp WHERE ccode IN ('410508','550106','550211')union
    SELECT '04财保' ,md FROM #tmp WHERE ccode IN ('410509','550107','550212')union
    SELECT '05劳保' ,md FROM #tmp WHERE ccode IN ('410510')union
    SELECT '06培训' ,md FROM #tmp WHERE ccode IN ('410511','550114','550220')union
    SELECT '07低耗' ,md FROM #tmp WHERE ccode IN ('410512','550115','550219')union 
    SELECT '08营业物料' , md FROM #tmp WHERE ccode IN ('550111','550117') 
    实际意义是查出的结果直接可以复制粘贴,但有时部分数据不会发生,为保持顺序而将取不到的或没有实际发生的以0值代替。
      

  3.   

    简单的说,
    select a1,a2 from a where b=c
    条件b=c可能不存在,也可能存在。
    a1是字符,a2是数值。
    b=c不存在时,a2=0,存在时a2取符合条件的值。
    而不是条件不存在时取的是空值。