2011-03-07 15 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

これは、データベースレイヤーの外で行うのが最適です。それは価値があるため、とにかく(またはそうでなければならない)行/列形式で格納しないでください。この場合、表の作成は表示レイヤーでのみ行われます。

2次元配列を使用してレンダリング時にデータを格納し、配列の次元を合計して行/列の合計を取得します。

+0

行/列形式で保存しないと言ったら、私のdbスキーマを参照していますか?つまり、私のテーブルは正規化されていませんか?毎月の工数見積もりを保持しているので、レコードごとに12ヶ月のフィールドを持つのは大したことではありません。 – jeff

+0

私の質問はそれほど単純ではありません。私はOracle ROLLUPを調査し始めました。 – jeff

+0

サーブレットまたはビュー内のDBレイヤーの外側にありますか? – 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 
関連する問題