#sql #google-bigquery
#sql #google-bigquery
Вопрос:
Я не могу заставить предложение STRING_AGG() работать. Я получаю сообщение об ошибке: «ВЫБЕРИТЕ выражение списка, ссылающееся на consignment_items.receiver_id, которое не сгруппировано и не агрегировано в [3:1]«
SELECT
table1.field1 AS alias1,
table1.field2,
table1.field3,
table2.field4,
table2.field5 AS alias2,
STRING_AGG(table3.field9, '|') AS alias3
FROM database.table1 table1
JOIN database.table3 roles ON table1.field1 = table3.field6
JOIN database.table2 ON table1.field2 = table2.field7
Ответ №1:
Вам нужно GROUP BY
. Это сработает:
GROUP BY 1, 2, 3, 4, 5
Комментарии:
1. Спасибо! Это определенно сработало. Не могли бы вы, пожалуйста, рассказать мне, почему это сработало или почему это было необходимо в запросе для работы?
2.
STRING_AGG()
это функция агрегирования. Для этого требуетсяGROUP BY
(если у вас есть неагрегированные столбцы). BigQuery позволяет использовать целочисленные аргументы позиции дляGROUP BY
ключей (аналогичноORDER BY
).