方法四:SQL语句+数据透视表
SQL语句为:
- select 日期,IIF(是否挂车="否",0,`行驶公里数(公里)`),`额定载重(吨)` from
- (select A.日期,A.车型类别,A.`行驶公里数(公里)`,B.`额定载重(吨)`,B.是否挂车 from
- (select YEAR(日期) as 日期,车型类别,`行驶公里数(公里)` from [数据源$C4:G] where not isnull(车型类别))A
- left join
- (select * from [数据源$I4:K])B
- on A.车型类别=B.车型类别)
复制代码 分析该SQL语句:
select 日期,IIF(是否挂车="否",0,`行驶公里数(公里)`),`额定载重(吨)` from (select A.日期,A.车型类别,A.`行驶公里数(公里)`,B.`额定载重(吨)`,B.是否挂车 from (select YEAR(日期) as 日期,车型类别,`行驶公里数(公里)` from [数据源$C4:G] where not isnull(车型类别))A left join (select * from [数据源$I4:K])B on A.车型类别=B.车型类别) 第一层:
select A.日期,A.车型类别,A.`行驶公里数(公里)`,B.`额定载重(吨)`,B.是否挂车 from (select YEAR(日期) as 日期,车型类别,`行驶公里数(公里)` from [数据源$C4:G] where not isnull(车型类别))A left join (select * from [数据源$I4:K])B on A.车型类别=B.车型类别目的就是实现以“车型类别”桥梁对表一进行添加列。
执行SQL语句后,运行的结果是:
日期 | 车型类别 | 行驶公里数(公里) | 额定载重(吨) | 是否挂车 | 2012 | B1类 | 500 | 8 | 否 | 2012 | B1类 | 500 | 8 | 否 | 2012 | A1类 | 200 | 25 | 是 | 2013 | C2类 | 400 | 7 | 否 | 2013 | B2类 | 500 | 9 | 否 | 2013 | A2类 | 300 | 26 | 是 | 2013 | A6类 | 400 | 30 | 是 | 2014 | B1类 | 300 | 8 | 否 | 2014 | C1类 | 700 | 6 | 否 | 2014 | C2类 | 500 | 7 | 否 | 2014 | B2类 | 200 | 9 | 否 | 2014 | C1类 | 500 | 6 | 否 | 2014 | A1类 | 300 | 25 | 是 | 2014 | A2类 | 500 | 26 | 是 | 2014 | A3类 | 400 | 27 | 是 | 2014 | A4类 | 300 | 28 | 是 | 2012 | A6类 | 600 | 30 | 是 | 2014 | A6类 | 500 | 30 | 是 | 2014 | A6类 | 700 | 30 | 是 |
第二层: select 日期,IIF(是否挂车="否",0,`行驶公里数(公里)`),`额定载重(吨)` from (select A.日期,A.车型类别,A.`行驶公里数(公里)`,B.`额定载重(吨)`,B.是否挂车 from (select YEAR(日期) as 日期,车型类别,`行驶公里数(公里)` from [数据源$C4:G] where not isnull(车型类别))A left join (select * from [数据源$I4:K])B on A.车型类别=B.车型类别) 目的就是对是否挂车为“否”进行赋值为 0 执行SQL语句后,运行的结果是:
日期 | Expr1001 | 额定载重(吨) | 2012 | 0 | 8 | 2012 | 0 | 8 | 2012 | 200 | 25 | 2013 | 0 | 7 | 2013 | 0 | 9 | 2013 | 300 | 26 | 2013 | 400 | 30 | 2014 | 0 | 8 | 2014 | 0 | 6 | 2014 | 0 | 7 | 2014 | 0 | 9 | 2014 | 0 | 6 | 2014 | 300 | 25 | 2014 | 500 | 26 | 2014 | 400 | 27 | 2014 | 300 | 28 | 2012 | 600 | 30 | 2014 | 500 | 30 | 2014 | 700 | 30 |
|