2013-02-26 65 views
0

我有一个表,其中有信用卡和借方帐户的列作为期间'1-12'的行,并且还应包含每个期间的期初余额。在SQL Server中复制SQL行

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

要插入一个空白行?我不知道我明白了这个问题 – 2013-02-26 03:21:48

+0

在上面的表中,我想动态地创建一个帐户ID为1001(1001 2 0 0 100和1001 3 0 0 100等等)说,谢谢 – Dash600028 2013-02-26 03:27:23

回答

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 
+0

仍然我可以得到只有一行即使左外连接应该返回所有12行?我做错了什么? – Dash600028 2013-02-26 04:14:53

+0

认为这里的问题是它创建了12行,但在帐户列中分配了“NULL”,但我希望该帐户也被复制。 – Dash600028 2013-02-26 04:27:31