我有一个select语句,从一个月度汇总表中收集数据,如下所示
companyname, employee, id, usage_a, ... usage_m
我需要从6个月度汇总表中创建报告,如下所示
companyname, employee, id,
jan_usage_a, ...june_usage_a, average (jun_jan_usage_a),
...
jan_usage_m, ...june_usage_m, average (jan_jun_usage_m)
我用较少的列做了类似的事情,但是我必须创建一个包含每个月使用情况的列的表,然后用一个查询合并每月的数据。最后,我将导出到excel创建另一列,以平均所需的几个月的每次使用。
对于上面的报告,我必须创建一个超过一百列的表。 我的问题是有更好的方法吗? 感谢。
如果标题有点不清楚,请抱歉。
答案 0 :(得分:1)
如果您有六个不同的表,那么您需要将它们连接在一起:
select tjan.companyname, tjan.employee, tjan.id, <rest of tjan columns>, <rest of jfeb columns>
from tjan join
tfeb
on tjan.companyname = tfeb.companyname and
tjan.employee = tfeb.employee and
tjan.id = tfeb.id
etc. etc. etc.
您遇到的问题是不同月份的人口可能不同,因此联接会丢失行。处理此问题的一个好方法是使用驾驶表:
select . . .
from (select companyname, employee, id from tjan union
select companyname, employee, id from tfeb union
. . .
) driving left outer join
tjan
on tjan.companyname = driving.companyname and
tjan.employee = driving.employee and
tjan.id = driving.id left outer join
tfeb
on tfeb.companyname = driving.companyname and
tfeb.employee = driving.employee and
tfeb.id = driving.id left outer join
. . .
您可以在一个SQL语句中完成所有这些操作。有重复的部分(例如选择中的列名)。考虑使用Excel生成这些。