2011-03-07 67 views
0

我將一個excel「數據庫」移植到真正的數據庫應用程序中,客戶希望看到熟悉的電子表格視圖,其中顯示跨行添加的數據並彙總列。這是可能與SQL查詢?或者應用程序是否應該執行這些總計算?我正在使用Java和Oracle編寫應用程序來實現持久性。sql在行和列之間添加值

Schema: 
    CREATE TABLE CTC_COST_TO_COMPLETE (
    COST_TO_COMPLETE_ID VARCHAR2(24) NOT NULL, 
    LINECODE VARCHAR2(16), 
    DEPT VARCHAR2(6), 
    YEAR VARCHAR2(4), 
    SUPERVISOR VARCHAR2(9), 
    JAN VARCHAR2(12), 
    FEB VARCHAR2(12), 
    MAR VARCHAR2(12), 
    APR VARCHAR2(12), 
    MAY VARCHAR2(12), 
    JUN VARCHAR2(12), 
    JUL VARCHAR2(12), 
    AUG VARCHAR2(12), 
    SEP VARCHAR2(12), 
    OCT VARCHAR2(12), 
    NOV VARCHAR2(12), 
    DEC VARCHAR2(12), 
      ); 

每一行代碼存儲工時估計每月主管需要

RAW: 
id  Linecode  Dept Year Supervisor Jan  Feb  Mar ... Dec 
1  ED.312  400 2011  P13341  12  10  15 ... 6 
2  GR.544  400 2011  P13341  23  5  1 ... 9 
3  WV.132  400 2011  P13341  2  1  18 ... 16 



Need out on web page: 
    Linecode  Dept Year Supervisor Jan  Feb  Mar ... Dec Sub Total 
    ED.312  400 2011  Rozycki  12  10  15 ... 6   135 
    GR.544  400 2011  Rozycki  23  5  1 ... 9   76 
    WV.132  400 2011  Rozycki  2  1  18 ... 16   89 
==================================================================================== 
             Total 37  16  34 ... 31   300 

視圖是一點點比我顯示更加複雜。例如,我可能想要按照所有主管的行代碼總結總計。

謝謝。

+0

什麼是你的數據庫設計(方案)? – rkg

+0

我編輯了我的問題以包含模式信息。 – jeff

回答

1

這最好在數據庫層之外完成。對於它的價值,你不會像往常一樣(或不應該)以行/列格式存儲它 - 在這種情況下,列表只發生在顯示層。

在渲染時使用2d數組來存儲數據,並沿數組的維數求和以獲得行/列總數。

+0

當你說不以行/列格式存儲時,你是指我的數據庫模式嗎?換句話說,我的表沒有正常化?我沒有看到有什麼大不了的,因爲他們持有每月工時估計值,因此每個記錄有12個月的字段。 – jeff

+0

我的查詢並不那麼簡單。我開始調查Oracle ROLLUP。 – jeff

+0

DB層之外 - 在Servlet或View中? – jeff

1

如果你真的想這樣做在SQL中的分類彙總,並沒有想使用類似PIVOT你可以做這樣的事情:

select Jan, Feb, Mar, ..., Dec, Jan + Feb + Mar + ... + Dec AS SubTotal 
from MyTable 

union all 

select SUM(Jan), SUM(Feb), SUM(Mar), SUM(Jan + Feb + Mar + ... + Dec) 
from MyTable