对于每个唯一 partner_ID,彼此减去 2 个数据库行? MYSQL

subtract 2 DB rows from each other for each unique partner_ID? MYSQL

我有一个 MYSQL table 需要从 2 个不同的行中减去值。

这是我的数据库table:

表名:ext_partnertotals

| Partner_ID | Partnername | Month | Year | Total |
|------------|-------------|-------|------|-------|
| 1          | Partner 1   | 1     | 2018 | 10    |
| 1          | Partner 1   | 2     | 2018 | 12    |
| 2          | Partner 2   | 1     | 2018 | 18    |
| 2          | Partner 2   | 2     | 2018 | 12    |

它应该通过查询得到这个:

| Partner_ID | Partnername | up/down |
|------------|-------------|---------|
| 1          | Partner 1   | +2      |
| 2          | Partner 2   | -6      |

我需要为每个合作伙伴获取 2 个不同月份的减法值。
每个合作伙伴每个月都有一个 table 行和那个月的一个值。
现在我需要知道自上个月以来它们的价值是上涨还是下跌。
有人可以给我写个查询吗?

由于您无法改进糟糕的架构,我建议您使用(非常ugly/hard 维护且非常慢)相关子查询:

SELECT Partner_ID, Partnername, Year, Month, Total - (
  SELECT Total
  FROM   ext_partnertotals AS prev
  WHERE  prev.Partner_ID = cur.Partner_ID AND CASE cur.Month
           WHEN 1 THEN prev.Year = cur.Year - 1 AND prev.Month = 12
           ELSE prev.Year = cur.Year AND prev.Month = cur.Month - 1
         END
) AS `up/down` FROM ext_partnertotals AS cur

sqlfiddle 上查看。