Первый вариант у Вас не работает не из-за вложенности, а из-за того, что в SELECTE выбираете три колонки, а потом этот SELECT пытаетесь использовать в IN, где допускается только одна колонка.
Вариант с JOIN можно сделать по разному, например так:
SELECT sum(`Acheck`.`TOTAL`) AS `SUME`,
strftime('%Y - %m', `Acheck`.`LOGICDATE`) AS `LOGICDATE`
FROM `Categ`
JOIN `Menu` ON `Categ`.`SIRF` = `Menu`.`Categ`
JOIN `ARcheck` ON `Menu`.`SIRF` = `ARcheck`.`SIFR`
JOIN `Acheck` ON `ARcheck`.`SYS_NUM` = `Acheck`.`SYS_NUM`
WHERE `Categ`.`SIRF` = 2
GROUP BY `LOGICDATE`
Или так:
SELECT sum(`Acheck`.`TOTAL`) AS `SUME`,
strftime('%Y - %m', `Acheck`.`LOGICDATE`) AS `LOGICDATE`
FROM `Acheck`
JOIN `ARcheck` ON `ARcheck`.`SYS_NUM` = `Acheck`.`SYS_NUM`
JOIN `Menu` ON `Menu`.`SIRF` = `ARcheck`.`SIFR`
JOIN `Categ` ON `Categ`.`SIRF` = `Menu`.`Categ`
WHERE `Categ`.`SIRF` = 2
GROUP BY `LOGICDATE`
В любом случае, на данных в sqlfiddle для `Categ`.`SIRF` = 2 будет пустой результат.
(`Categ`.`SIRF` = 2) => (`Menu`.`SIRF` = 4) => ни одной строки из `ARcheck`