上一次将meplan中的run_all_year的batch文件运行完了,在RUN_LU中产生了LAZ文件,非常庞大,不能直接用excel来进行分析。分析原因,无非是交通小区划分的太精细,实际分析我们是根据land use zone的,所以集计的过程大致可以表现为:
导入LAZ文件 --> 使用查询语句对其数据进行分类提取 --> 输出表格
其中调用Import_RunQuery_Export
'------------------------------------------------------------
' Import_RunQuery_Export
'
'------------------------------------------------------------
Function Import_RunQuery_Export()
On Error GoTo Import_RunQuery_Export_Err
DoCmd.SetWarnings False
Call ImportTable("LAZ1")
DoCmd.OpenQuery "LAZ_Aggregation - hard coded agg table", acViewNormal, acEdit
Call ExportTable("LAZ_Ag_Output")
Import_RunQuery_Export_Exit:
Exit Function
Import_RunQuery_Export_Err:
MsgBox Error$
Resume Import_RunQuery_Export_Exit
End Function
sql 语句:
SELECT LAZ1.Fact, [LKP_LU zone aggregation Training].[AG ZONE], [LKP_LU zone aggregation Training].[agzn name], Sum(LAZ1.[TotProd#]) AS TotProd, Sum(LAZ1!ConsCost*LAZ1![TotProd#]) AS TotConsCost INTO LAZ_Ag_Output
FROM Tbl_Agg_Factors INNER JOIN ([LKP_LU zone aggregation Training] INNER JOIN LAZ1 ON [LKP_LU zone aggregation Training].[LU ZONE] = LAZ1.Zone) ON Tbl_Agg_Factors.FACTOR = LAZ1.Fact
GROUP BY LAZ1.Fact, [LKP_LU zone aggregation Training].[AG ZONE],[LKP_LU zone aggregation Training].[agzn name];
其中,inner join(等值连接) 只返回两个表中联结字段相等的行
group by 作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
Into 后面直接是输出的表格
08.21