Hm. Я не думаю, что набор записей и запрос совпадают; Я не вижу поле record_id из набора полей. Я исправлю запрос, который вы указали.
select up.id_fk, up.plant_id_fk, pn.plant_name, ym2, ifnull(sum(data.value_1),0) totalvalue_1
from (select distinct date_format(date, '%Y-%m') ym, date_format(date, '%M %Y') ym2 from data) dates
cross join (select distinct data.id_fk, data.plant_id_fk from data) up
left join data on date_format(data.date, '%Y-%m') = dates.ym
and up.id_fk=data.id_fk
and up.plant_id_fk=data.plant_id_fk
and category_1='A'
INNER JOIN plants pn ON up.plant_id_fk = pn.plant_id
group by up.id_fk, up.plant_id_fk, ym2, ym
order by up.id_fk, up.plant_id_fk, date(concat(ym,'-1'))
Это должно работать. Я добавил pn.plant_name в область SELECT и использовал INNER JOIN, чтобы присоединить таблицу заводов к верхнему выбору для поля plant_id_fk.
Кроме того, намного проще читать, если элементы SQL пишутся с большой буквы (SELECT, JOIN, GROUP и т. Д.), А также определения таблиц (UP, YM2, YM, DATES и т. Д. И т. Д.). Это всего лишь мое личное предпочтение.
Нишан Карасик
www.medfocusrcm.com