SQL如何根据条件从另一列中减去一列

时间:2021-06-28 05:11:15

标签: mysql sql sql-server

我正在尝试根据另一列中的年份减去此数据以创建新列。
数据如下所示:

+-----+-----+
|value|year|
+-----+-----+
| 2658| 2020|
| 4234| 2019|
| 5435| 2018|
+-----+-----+

我想得到这样的输出,比如 2019 - 2020 年的值:

+---------+
|new_value|
+---------+
| 1576| 
+--------+

我也不想制作新表或任何东西。也最好使用 CTE 或一种可以轻松放入更大查询的方法。

3 个答案:

答案 0 :(得分:1)

您可以使用条件聚合:

select sum(case when year = 2019 then value else - value end)
from t
where year in (2019, 2020);

答案 1 :(得分:0)

像这样(未经测试):

SELECT l.value - r.value as new_value
FROM my_table l 
JOIN my_table r ON (l.year=2019 AND r.year=2020)

答案 2 :(得分:0)

假设您不只是想要 2019/2020,请使用逐个连接将表连接到自身

SELECT b.value - a.value 
FROM t a
  JOIN t b ON a.year + 1 = b.year