where table1.date between '2001-7-1' and '2001-7-31'因为有一条记录table1.date为null,正好被你的条件过滤掉了,改成:where isnull(table1.date,table2.date) between '2001-7-1' and '2001-7-31'