2

我有一个 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 创建另一列,以平均所需月份的每次使用情况。

对于上面的报告,我必须创建一个超过一百列的表格。我的问题是有没有更好的方法来做到这一点?谢谢。

对不起,如果标题有点不清楚。

4

1 回答 1

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 语句中完成所有这些操作。有重复的部分(比如select中的列名)。考虑使用 Excel 来生成这些。

于 2012-07-11T21:46:54.417 回答