数据源: Union和Union All都能够将两个或两个以上的表格(必须列数一样)上下合并。 Union合并: select 部门,姓名 from [Sheet3$a1:b5] union select 部门,姓名 from [Sheet3$d1:e5] 结果: Union All语句: select 部门,姓名 from [Sheet3$a1:b5] union all select 部门,姓名 from [Sheet3$d1:e5] 结果: 对比union 和union all,就会发觉union有去重复的功能。 A AA这条数据有两条,union只保留一条,union all则不处理,保留重复。 遇到列数不相同的表格,又需要上下合并在一起,可以自造字段(列) 数据源: 要求:将两表上下合并,分别对应月份表头。 sql语句: select 部门,[1月],0 as [2月],[3月],0 as [4月] from [Sheet4$a1:c6] union all select 部门,[1月],[2月],0 as [3月],[4月] from [Sheet4$f1:i6] 表格没有的月份字段,可以使用 0 as 字段名称,这样造一个字段,来对应两个表格的列数关系。 如:表1,只有1月和3月两个字段,通过下面的语句 select 部门,[1月],0 as [2月],[3月],0 as [4月] from [Sheet4$a1:c6] 自造了2月和4月两个字段,两个字段中的数据都是0.除了0,也可以用 null as 字段名称来造,但是null对于统计的时候并不方便,如上两章曾说过的count/avg等函数,并不统计null值,所以推荐用0较好。 当然,根据实际情况而定最好。 |
|