0

期間 '1-12' の行として貸方口座と借方口座の列を持ち、各期間に持ち込む必要がある期首残高もあるテーブルがあります。

テーブル

Account  |Period   |Credit |Debits    |Opening Balance
1000       1          100     0           50          
1000       2           0      100         50          
.          .           .      .            .          
.          .           .      .            .          
1001       1          50      0           100         
1002       1          40      0           100         

しかし、ここでの問題は、アカウント 1001 と 1002 の各行に期首残高がある 12 行を複製または作成できるかということです。

4

1 に答える 1

0

ここに1つの方法があります。数値のリストへの結合を使用して、期間と勘定科目のすべての組み合わせを取得します。次に、相関サブクエリを使用して、残高の最新の値を選択します。

このバージョンは MySQL 構文を使用します。相関サブクエリは、データベースに応じてselect top 1orwhere rownum = 1または何か他のものを使用する場合があります。

select t.account, n.n, coalesce(t.credit, 0) as credit,
       coalesce(t.debit, 0) as debit,
       (select balance
        from t t2
        where t2.account = t.account and
              t2.period <= t.period
        order by period desc
        limit 1
       ) as balance
from (select 1 as n union all select 2 union all select 3 union all select 4 union all
      select 5 union all select 6 union all select 7 union all select 8 union all
      select 9 union all select 10 union all select 11 union all select 12
     ) n left outer join
     t
     on t.period = n.n
于 2013-02-26T03:27:21.633 に答える