У меня есть несколько таблиц, как показано ниже, где я хочу получить:
Engine.ename
Sum of FuelConsumption.quantity
Sum of Maintainance.pricetotal
Sum of CounterHistory.total
, сгруппированные по Engine.ename
, где Engine.ename
всегда следует выбирать вместе с нулевыми значениямидругие переменные, если их выбор возвращает ноль.
Я пробовал это, но не смог, я получаю все Engine.ename
значения, но с неправильными числами:
SELECT DISTCINT
e.ename,
ISNUll(SUM(ch.total), 0),
ISNUll(SUM(fc.quantity), 0),
ISNUll(SUM(m.pricetotal), 0)
FROM
Engine e
LEFT JOIN
FuelConsumption fc ON fc.engineid = e.id
LEFT JOIN
Maintenance m ON m.engineid = e.id
LEFT JOIN
(ElectricBox eb
JOIN
ECounter ec ON ec.boxid = eb.ID
JOIN
Registration r ON r.counterid = ec.ID
JOIN
CounterHistory ch ON ch.regid = r.id) ON eb.engineid = e.id
GROUP BY
e.ename
Проверьте мою схему БД ниже: