【问题标题】:SQL How to subtract one column based on criteria from another columnSQL如何根据条件从另一列中减去一列
【发布时间】:2021-09-10 10:25:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您使用的是MySQL 还是SQL Server ?请不要向标签发送垃圾邮件
  • 请正确放置示例输出
  • 使用 LAG 解析函数

标签: mysql sql sql-server


【解决方案1】:

类似这样的东西(未经测试):

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】:

    假设您不只是想要 2019/2020,请使用 off by one join 将表连接到自身

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

    【讨论】:

      【解决方案3】:

      您可以使用条件聚合:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-22
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 2023-04-01
        • 2021-01-21
        相关资源
        最近更新 更多