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

再帰的なPLSQLクエリのヘルプ

    これはテストされていないおおよその答えです(create tableを提供した場合) およびinsert あなたのデータ/構造のステートメント、私はそれをテストしたでしょう)。トランザクションテーブルに分岐がないことを前提としています(つまり、link_trx_id ユニークです)。基本的に、再帰的結合を使用してグループ化、親情報、および順序を取得し、次に分析関数を使用して現在の合計(current_net)を取得します。 )。以前の合計を取得しようとするよりも(これは可能です)、現在の行のcreditを単に削除する方が理にかなっているようです。 およびdebit current_netから 。

    SELECT trx_id,
           debit,
           credit,
           root_amt - cum_debit + cum_credit + debit - credit AS current_gross,
           root_amt - cum_debit + cum_credit AS current_net
    FROM   (SELECT trx_id,
                   debit,
                   credit,
                   SUM(credit) OVER (PARTITION BY event_id ORDER BY lvl) AS cum_credit,
                   SUM(debit) OVER (PARTITION BY event_id ORDER BY lvl) AS cum_debit,
                   root_amt
            FROM   (SELECT     trx_id,
                               debit,
                               credit,
                               LEVEL AS lvl,
                               CONNECT_BY_ROOT (gross_amount) AS root_amt,
                               CONNECT_BY_ROOT (event_id) AS event_id
                    FROM       transaction t LEFT OUTER JOIN event e ON t.trx_id = e.transaction_id
                    CONNECT BY link_trx_id = PRIOR trx_id
                    START WITH link_trx_id IS NULL))
    


    1. mysql pythonのインストールで問題が発生し、mysqldbモジュールがdjangoに見つかりません

    2. 統計更新の潜在的な改善:MAXDOP

    3. ssp.class.phpで2つのテーブルを結合する方法

    4. 組織全体でデータを共有する方法