我有一個表,我已經實作了一些查詢來創建兩列,其中一列等于零,而另一列不等于零。它看起來像這樣
...| a | b |
| 1 | 0 |
| 0 | 1 |
| 1 | 0 |
| 1 | 0 |
| 1 | 0 |
| 0 | 2 |
| 0 | 1 |
| 1 | 0 |
不,我試圖找到一個 sql 陳述句,如果它不是 0,則將列 a 相加并從中減去值 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,我不確定這些函式是否適合這個問題。
uj5u.com熱心網友回復:
您正在尋找運行總數。這通常是通過視窗函式來實作的SUM OVER。您錯誤地標記了兩個不同的 DBMS,MySQL 和 SQLite,但它們都支持此標準 SQL 功能 - 除非您使用的是舊版本。
表資料是一組無序的資料,因此您需要確定順序的東西。我假設在下面的查詢中有一些 sortkey:
select sortkey, a, b, sum(a - b) over (order by sortkey) as total
from ( <your query> ) q
order by sortkey;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/340576.html
