Сообщение об ошибке очень наглядно:
Подзапрос вернул более 1 значения. Это не разрешено, когда
подзапрос следует =,! =, <, <=,>,> = или когда подзапрос используется как
выражение.
Предположим, вы хотите использовать оператор сравнения, который ожидает одно значение. Пример:
yourcolumn > (select yourcolumn2 from yourtable where yourcondition)
Теперь предположим, что ваш подзапрос вернет два значения: 5 и 7. Предположим далее, что в случае ваш столбец равен 6. Итак, это будет означать, что вам интересно знать, 6> (5, 7). Но как выполнить это сравнение? 6> 5 верно, но 6> 7 ложно. Так каким должен быть результат? Правда? Ложь? Ноль? Сложно определить. Не существует четко определенного способа оценить это выражение. Таким образом, для этих операторов вам понадобится один результат для ваших подзапросов. Есть случаи, когда не требуется иметь уникальный результат. Пример:
yourcolumn in (select yourcolumn2 from yourtable where yourcondition)
В этом случае вас интересует, находится ли значение внутри набора.
Ваш фактический запрос пытается вставить в таблицу. Значение поля определяется подзапросом, но если подзапрос имеет несколько результатов, то результат подзапроса амбивалентен и поэтому не может определить значение поля, которое является ограничителем показа.
Итак, в соответствии с вашими потребностями вам нужно будет справиться с ситуацией. Вы можете использовать свой групповой запрос как таблицу и присоединиться к ней. Или вы можете избежать группы по. Или вы можете быть уверены, что у вас будет одна группа для всех записей, которые будут вставлены через или где.