我有一张表格,其中包含信用卡和借记卡帐户的列,作为期间为“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
但我的问题是,我可以复制或创建12行,并在帐户1001和1002的每一行中有期初余额吗?
答案 0 :(得分:0)
这是一种方法。它使用联接到数字列表来获取期间和帐户的所有组合。然后,它使用相关子查询来选择余额的最新值。
此版本使用MySQL语法。相关子查询可能会使用select top 1
或where 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