#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, либо обернут функцией агрегирования
Используемые функции: