这样子没啥意义吧~! SELECT '01办公' code,isnull((select md FROM #tmp WHERE ccode IN ('550104','550205')),0) md ???
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值代替。
简单的说, select a1,a2 from a where b=c 条件b=c可能不存在,也可能存在。 a1是字符,a2是数值。 b=c不存在时,a2=0,存在时a2取符合条件的值。 而不是条件不存在时取的是空值。
SELECT '01办公' code,isnull((select md FROM #tmp WHERE ccode IN ('550104','550205')),0) md
???
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值代替。
select a1,a2 from a where b=c
条件b=c可能不存在,也可能存在。
a1是字符,a2是数值。
b=c不存在时,a2=0,存在时a2取符合条件的值。
而不是条件不存在时取的是空值。