对于每个唯一 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 上查看。
我有一个 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 上查看。