2012-07-11 75 views
2

我從一個月薪彙總表像下面合併不同表

companyname, employee, id, usage_a, ... usage_m 

我需要創建一個看起來像6月,彙總表報告收集數據的select語句並排匹配數據面以下

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中創建另一列來平均每月使用所需的月份。

對於上面的報告,我必須創建一個超過一百列的表格。 我的問題是有沒有更好的方法來做到這一點? 謝謝。

對不起,標題如果有點不清楚。

+1

聽起來像你想要做一個關鍵。每個數據庫都可以做到,但實施與RDMBS緊密相關。如果沒有表格結構樣本數據和預期輸出,則很難提供答案。 – 2012-07-11 21:30:34

+0

@Conrad,我按照Gordon的建議做了查詢,然後在Excel中做了關鍵點。這樣做爲我節省了大量時間,並且它出現了客戶想要的方式。感謝您的關鍵建議。 – jasmaar 2012-07-13 21:36:29

+0

好吧,我很高興它幫助,但它是一個意外:)。我其實並不是指Excel Pivot,而是指數據庫中的支點。像[this](http://stackoverflow.com/a/10222480/119477)。 – 2012-07-13 21:41:20

回答

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來生成這些。

+0

戈登,感謝您的詳細回覆和快速時機。我會研究這個解決方案。順便說一下,我拿起了你的書「數據分析使用SQL和Excel」的副本來幫助我完成我的工作,迄今爲止。 – jasmaar 2012-07-11 22:24:37