sql >> データベース >  >> RDS >> Oracle

テーブル内のグループ化されたレコードごとの現在の合計

    本当に追加のテーブルが必要ですか?

    必要なデータは簡単なクエリで取得できます。テーブルのように表示したい場合は、ビューとして作成できます。

    これにより、探しているデータが得られます:

    select 
        account, bookdate, amount, 
        sum(amount) over (partition by account order by bookdate) running_total
    from t
    /
    

    これにより、データをテーブルであるかのように表示するビューが作成されます。

    create or replace view t2
    as
    select 
        account, bookdate, amount, 
        sum(amount) over (partition by account order by bookdate) running_total 
    from t
    /
    

    テーブルが本当に必要な場合は、常に更新する必要があるということですか?それとも1回限りですか?明らかに、それが1回限りの場合は、上記のクエリを使用して「選択としてテーブルを作成」​​することができます。

    私が使用したテストデータは次のとおりです。

    create table t(account number, bookdate date, amount number);
    
    insert into t(account, bookdate, amount) values (1, to_date('20080101', 'yyyymmdd'), 100);
    
    insert into t(account, bookdate, amount) values (1, to_date('20080102', 'yyyymmdd'), 101);
    
    insert into t(account, bookdate, amount) values (1, to_date('20080103', 'yyyymmdd'), -200);
    
    insert into t(account, bookdate, amount) values (2, to_date('20080102', 'yyyymmdd'), 200);
    
    commit;
    

    編集:

    追加するのを忘れた;テーブルを順序付けすることを指定しました-これは実際には意味がなく、クエリ/ビューが必要であることを本当に意味していると思います-順序付けは実行したクエリの結果であり、固有のものではありませんテーブル(インデックス編成テーブルなどは無視)



    1. postgreSQLで特定のテーブルをミラーリングする

    2. Oracleでコンマを使用して金額を分割する

    3. #1064-SQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルを確認してください

    4. mysqlで入力がnullの場合、date_formatにnullを返します