我有一个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和该月的值
现在我需要知道如果它们从前一个月起上升或下降了价值
有人可以给我写一个查询吗?
答案 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上查看。