在下面的查询中,其中一个汇总总和具有引用其他列的公式。在这种情况下,MySQL 似乎甚至在汇总行中也使用了公式,而不是对列值求和。
值nErtek
似乎是使用总计行中的字段计算的,即(462.053-479.710+0)*2700
,结果是-47673.9对列值求和,结果为 61632-75232-12214-21744-3945+4079-43697+13500 = -77621
。
我做错了什么?
mysql> SELECT k.nValasztekKey as nValasztekKey, k.nErdoKey as nErdoKey, concat(v.sFafaj, ' ', v.sVNev) as sValasztek, concat_ws(' ', e.sFalu, e.sErdoResz, r.sName) as sErdoRaktar, k.nHossz as nHossz, elk.nM3Ar, sum(fKiterm) as fKiterm,sum(fElad) as fElad, sum(fVasar) as fVasar, sum(fKiterm)+sum(fVasar)-sum(fElad) as fKeszlet,(sum (fKiterm)+sum(fVasar)-sum(fElad))*elk.nM3Ar as nErtek
FROM keszlet as k
left join elokalk as elk on (k.nValasztekKey=elk.nValasztekKey and k.nErdoKey=elk.nKey)
left join valasztekok as v on (k.nValasztekKey=v.nKey)
left join erdok as e on (k.nErdoKey=e.nKey)
left join raktarak as r on (k.nErdoKey-1000000=r.nKey)
WHERE nErdoKey =2
GROUP BY k.nErdoKey, k.nValasztekKey, k.nHossz
WITH ROLLUP;
+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+
| nValasztekKey | nErdoKey | sValasztek | sErdoRaktar | nHossz | nm3Ar | fKiterm | fElad | fVasar | fKeszlet | nErtek |
+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+
| 14 | 2 | Nyár Hámozási rönk | Laskod 57/H | 260 | 10700 | 101.480 | 95.720 | 0.000 | 5.760 | 61632.0000 |
| 14 | 2 | Nyár Hámozási rönk | Laskod 57/H | NULL | 10700 | 101.480 | 95.720 | 0.000 | 5.760 | 61632.0000 |
| 15 | 2 | Nyár Belföldi rönk | Laskod 57/H | 250 | 7200 | 133.123 | 143.572 | 0.000 | -10.449 | -75232.8000 |
| 15 | 2 | Nyár Belföldi rönk | Laskod 57/H | NULL | 7200 | 133.123 | 143.572 | 0.000 | -10.449 | -75232.8000 |
| 16 | 2 | Nyár Kivágás | Laskod 57/H | 120 | 6200 | 39.830 | 41.800 | 0.000 | -1.970 | -12214.0000 |
| 16 | 2 | Nyár Kivágás | Laskod 57/H | NULL | 6200 | 39.830 | 41.800 | 0.000 | -1.970 | -12214.0000 |
| 18 | 2 | Nyár Forgácsfa | Laskod 57/H | 100 | 2400 | 18.940 | 28.000 | 0.000 | -9.060 | -21744.0000 |
| 18 | 2 | Nyár Forgácsfa | Laskod 57/H | NULL | 2400 | 18.940 | 28.000 | 0.000 | -9.060 | -21744.0000 |
| 22 | 2 | Fenyö Rönk | Laskod 57/H | 250 | 7200 | 14.852 | 15.400 | 0.000 | -0.548 | -3945.6000 |
| 22 | 2 | Fenyö Rönk | Laskod 57/H | NULL | 7200 | 14.852 | 15.400 | 0.000 | -0.548 | -3945.6000 |
| 24 | 2 | Fenyö Kivágás | Laskod 57/H | 80 | 6200 | 10.758 | 10.100 | 0.000 | 0.658 | 4079.6000 |
| 24 | 2 | Fenyö Kivágás | Laskod 57/H | 120 | 6200 | 81.070 | 88.118 | 0.000 | -7.048 | -43697.6000 |
| 24 | 2 | Fenyö Kivágás | Laskod 57/H | NULL | 6200 | 91.828 | 98.218 | 0.000 | -6.390 | -39618.0000 |
| 26 | 2 | Fenyö Forgácsfa | Laskod 57/H | 100 | 2700 | 62.000 | 57.000 | 0.000 | 5.000 | 13500.0000 |
| 26 | 2 | Fenyö Forgácsfa | Laskod 57/H | NULL | 2700 | 62.000 | 57.000 | 0.000 | 5.000 | 13500.0000 |
| NULL | 2 | Fenyö Forgácsfa | Laskod 57/H | NULL | 2700 | 462.053 | 479.710 | 0.000 | -17.657 | -47673.9000 |
| NULL | NULL | Fenyö Forgácsfa | Laskod 57/H | NULL | 2700 | 462.053 | 479.710 | 0.000 | -17.657 | -47673.9000 |
+---------------+----------+------------------------+-------------+--------+-------+---------+---------+--------+----------+-------------+
最佳答案
找到了。该字段的正确公式为 sum((fKiterm+fVasar-fElad)*elk.nM3Ar) as nErtek
。
关于MySQL 汇总 : Wrong total for one column calculated by a formula,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401803/