在SQL Server中复制SQL行

时间:2013-02-26 03:18:53

标签: sql

我有一张表格,其中包含信用卡和借记卡帐户的列,作为期间为“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的每一行中有期初余额吗?

1 个答案:

答案 0 :(得分:0)

这是一种方法。它使用联接到数字列表来获取期间和帐户的所有组合。然后,它使用相关子查询来选择余额的最新值。

此版本使用MySQL语法。相关子查询可能会使用select top 1where 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