2

次のような1つの月次サマリーテーブルからデータを収集する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)

私はより少ない列で同様のことをしましたが、各月の使用量の列を持つテーブルを作成し、1つのクエリで月ごとにデータをマージする必要がありました。最後に、Excelにエクスポートして別の列を作成し、必要な月の各使用量を平均します。

上記のレポートでは、100列を超えるテーブルを作成する必要があります。私の質問は、これを行うためのより良い方法はありますか?ありがとう。

タイトルが少しわかりにくい場合は申し訳ありません。

4

1 に答える 1

1

6つの異なるテーブルがある場合は、それらを結合する必要があります。

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
    . . .

これらすべてを1つのSQLステートメントで実行できます。繰り返しの部分があります(選択の列名など)。これらを生成するためにExcelを使用することを検討してください。

于 2012-07-11T21:46:54.417 に答える