每个唯一的partner_ID相互减去2个DB行? MYSQL

时间:2018-03-14 08:31:59

标签: mysql subtraction

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

这是我的数据库表:

表名: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个不同月份的减法值 每个合作伙伴每个月都有一个tablerow和该月的值 现在我需要知道如果它们从前一个月起上升或下降了价值 有人可以给我写一个查询吗?

1 个答案:

答案 0 :(得分:0)

由于您无法改善可怕的架构,我建议您使用(非常难看/难以维护且非常慢)的相关子查询:

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上查看。