如何解决基于运行ac_principal的运行主体?

时间:2015-05-21 08:48:46

标签: mysql sql

这是我的示例查询问题

+-------+----+-----------+--------------+------+
| id    | SN | principal | ac_principal | stat |
+-------+----+-----------+--------------+------+
|  1001 |  1 | 280       | 280          | paid |
| 10001 |  2 | 280       | 280          | paid |
| 10002 |  3 | 280       | -280         | NULL |
| 10003 |  4 | 280       | NULL         | NULL |
| 10004 |  5 | 280       | NULL         | NULL |
| 10005 |  6 | 280       | NULL         | NULL |
| 10006 |  7 | 280       | NULL         | NULL |
| 10007 |  8 | 280       | NULL         | NULL |
| 10008 |  9 | 280       | NULL         | NULL |
| 10009 | 10 | 280       | NULL         | NULL |
| 10010 | 11 | 280       | NULL         | NULL |
| 10011 | 12 | 280       | NULL         | NULL |
| 10012 | 13 | 280       | NULL         | NULL |
| 10013 | 14 | 280       | NULL         | NULL |
| 10014 | 15 | 280       | NULL         | NULL |
+-------+----+-----------+--------------+------+

这是我想要显示的输出

+-------+----+-----------+--------------+------+
| id    | SN | principal | ac_principal | stat |
+-------+----+-----------+--------------+------+
|  1001 |  1 | 280       | 280          | paid |
| 10001 |  2 | 280       | 280          | paid |
| 10002 |  3 | 280       | -280         | NULL |
| 10003 |  4 | 560       | NULL         | NULL |
| 10004 |  5 | 280       | NULL         | NULL |
| 10005 |  6 | 280       | NULL         | NULL |
| 10006 |  7 | 280       | NULL         | NULL |
| 10007 |  8 | 280       | NULL         | NULL |
| 10008 |  9 | 280       | NULL         | NULL |
| 10009 | 10 | 280       | NULL         | NULL |
| 10010 | 11 | 280       | NULL         | NULL |
| 10011 | 12 | 280       | NULL         | NULL |
| 10012 | 13 | 280       | NULL         | NULL |
| 10013 | 14 | 280       | NULL         | NULL |
| 10014 | 15 | 280       | NULL         | NULL |
+-------+----+-----------+--------------+------+

*注意:ac_principal中的(-280)必须在SN = 4中添加到(280)的主体,因此新的主体应该是560。

这是另一个样本...

+-------+----+-----------+--------------+------+
| id    | SN | principal | ac_principal | stat |
+-------+----+-----------+--------------+------+
|  1001 |  1 | 280       | 280          | paid |
| 10001 |  2 | 280       | 280          | paid |
| 10002 |  3 | 280       | -280         | NULL |
| 10003 |  4 | 560       | 560          | paid |
| 10004 |  5 | 280       | 280          | paid |
| 10005 |  6 | 280       | 280          | paid |
| 10006 |  7 | 280       | -280         | NULL |
| 10007 |  8 | 560       | -280         | NULL |
| 10008 |  9 | 840       | NULL         | NULL |
| 10009 | 10 | 280       | NULL         | NULL |
| 10010 | 11 | 280       | NULL         | NULL |
| 10011 | 12 | 280       | NULL         | NULL |
| 10012 | 13 | 280       | NULL         | NULL |
| 10013 | 14 | 280       | NULL         | NULL |
| 10014 | 15 | 280       | NULL         | NULL |
+-------+----+-----------+--------------+------+

1 个答案:

答案 0 :(得分:0)

也许是这样的?

   CASE
     WHEN (SELECT t.ac_principal FROM tbl1 t WHERE t.SN = SN-1) LIKE '-%') THEN principal - (SELECT t.ac_principal FROM tbl1 t WHERE t.SN = SN-1)
     ELSE principal
    END principal