根据两列的值加减值

  • 本文关键字:两列 sql sqlite
  • 更新时间 :
  • 英文 :


我有一个表,我已经实现了一些查询来创建两列,其中一列等于零,而另一列不等于零。它可以是这样的

...| a | b |
| 1 | 0 |
| 0 | 1 |
| 1 | 0 |
| 1 | 0 |
| 1 | 0 |
| 0 | 2 |
| 0 | 1 |
| 1 | 0 |

不,我试图找到一个sql语句,增加列a,如果它不是0,也从它减去值b。结果应该是这样的

| a | b | result |
| 1 | 0 |   1    |
| 0 | 1 |   0    |
| 1 | 0 |   1    |
| 1 | 0 |   2    |
| 1 | 0 |   3    |
| 0 | 2 |   1    |
| 0 | 1 |   0    |
| 1 | 0 |   1    |

我尝试了很多sum, count, case when等,但作为sql noob我不确定这些是否是这个问题的正确函数。

您正在寻找运行总数。这通常是通过窗函数SUM OVER实现的。你错误地标记了两个不同的DBMS, MySQL和SQLite,但它们都支持这个标准的SQL功能-除非你使用的是旧版本。

表数据是一组无序的数据,因此需要一些东西来确定顺序。我在下面的查询中假设了一些排序键:

select sortkey, a, b, sum(a - b) over (order by sortkey) as total
from ( <your query> ) q
order by sortkey;

最新更新