HAVING - это не то, что вам нужно - это полезно, только если вы хотите фильтровать по MAX. Например, если вы не хотите получать все MAXids, а только те, которые больше 2, вы можете использовать HAVING MAXid> 2.
Насколько я понимаю, вы хотите игнорировать некоторые строки и рассчитать MAXid оставшихся строк. Для этого ваше утверждение выглядит правильно для меня. Если позиция не указана в наборе результатов, если все ее идентификаторы указаны в предложении NOT IN. Это разумно, так как ничего не осталось, вы могли бы рассчитать МАКС. Если некоторые из идентификаторов позиции указаны в NOT IN, а другие , а не , вы должны получить МАКС из тех, которые не перечислены в NOT IN.
Если ваш набор результатов не соответствует этим объяснениям, вам следует отладить строку, вставленную в NOT IN, - возможно, она случайно содержит слишком много идентификаторов.