Ошибка синтаксического анализа запроса: CANNOT_GROUP_WITHOUT_AGG

#google-sheets #pivot #google-sheets-formula

#google-таблицы #сводная #google-sheets-формула

Вопрос:

Я пытаюсь преобразовать одну таблицу в другую.

Что не так с моим синтаксисом?

 =QUERY(B21:D24, "select A,C where A is not null group by A pivot B",1)
  

Невозможно проанализировать строку запроса для параметра запроса функции 2: CANNOT_GROUP_WITHOUT_AGG

введите описание изображения здесь

Ответ №1:

Проблема:

CANNOT_GROUP_WITHOUT_AGG

означает, что запрос не может использовать столбцы группы без AGG функции регата.

 select A,C where A is not null group by A pivot B
  

Вы просите его сгруппировать по A. Если запрос группируется по столбцу A, что делать со столбцом C? Столбец C не может отображаться рядом. Хотя в вашем примере нет дубликатов в B, подумайте, что произойдет, если столбец B будет a , b , a вместо a , b , c . Столбец C необходимо агрегировать. В противном случае, для каждой группы в A, что вы хотите сделать с C (если в C есть несколько элементов для одной и той же группы в A)?

Решение:

Предоставьте агрегатную функцию для столбца C, например, sum , count , и т.д. max Для каждой группы в A будет суммироваться или подсчитываться соответствующий столбец C, или будет принято максимальное значение C в этой группе.

Фрагмент:

 =QUERY(B21:D24, "select A, sum(C) where A is not null group by A pivot B",1)
  

Ответ №2:

Пожалуйста, используйте следующую формулу, чтобы 0 также получить ‘s.
Это IF функция, которая даст вам 0 ‘s в вашей сводной таблице.

 =ArrayFormula(IF(QUERY(M1:O22, "select M, sum(O) where M is not null group by M pivot N")="",0, 
                 QUERY(M1:O22, "select M, sum(O) where M is not null group by M pivot N")))
  

введите описание изображения здесь

Что касается синтаксиса, упоминается, что

Если вы используете предложение pivot, то каждый столбец, указанный в предложении select, должен быть либо указан в предложении group by, либо обернут функцией агрегирования

Используемые функции: