Выбрать столбцы по имени, а не по букве в Google Query Language (GQL) с помощью Google Spreadsheets? - PullRequest
7 голосов
/ 22 сентября 2011

вопрос новичка, возможно ли выбрать столбцы по имени, а не по букве при использовании Google Query Language с Google Spreadsheets?

Это прекрасно работает для меня: "ВЫБЕРИТЕ A, COUNT (B) GROUP BY A"

Было бы замечательно, если бы я мог использовать заголовки столбцов в первом ряду, больше похоже на базу данных, например:

"ВЫБРАТЬ студента, СЧЕТ (задержание) GROUP BY student"

Я подозреваю, что это невозможно, но надеюсь, что это еще один случай, когда мои навыки поиска в Интернете подвели меня.

Ответы [ 3 ]

5 голосов
/ 11 января 2012

В настоящее время это невозможно. Документация GQL гласит [1] «На столбцы ссылаются идентификаторы (а не метки). Например, в электронной таблице Google идентификаторы столбцов - это буква столбца из одного или двух символов (A, B, C, ...). «

Если вы хотите сделать это в электронной таблице, можно с помощью следующей формулы преобразовать имя заголовка столбца в букву (может потребоваться некоторая настройка +1 (может быть +2)). Кроме того, заголовки столбцов уникальны и не содержат запятых

=REGEXEXTRACT(ADDRESS(1,COUNTA(SPLIT(LEFT(JOIN(",",TRANSPOSE(1:1)),FIND("your_column_name",JOIN(",",TRANSPOSE(1:1)))),","))+1,4);"[a-zA-Z]+")

[1] https://developers.google.com/chart/interactive/docs/querylanguage#Select

0 голосов
/ 25 сентября 2018

Я обнаружил, что при использовании функции IMPORTRANGE для внешних диапазонов она преобразуется из буквы в номер столбца и поможет вам в этом вопросе.

Я хотел выбрать столбец на основе имени его поля, но проблема для меня заключалась в том, что столбец, который нужно посмотреть, вероятно, изменится в будущем. Поэтому я использовал функцию MATCH для идентификации столбца, поэтому он выглядит примерно так:

=QUERY(IMPORTRANGE("spreadsheet url","NamedRange"),"SELECT Col"&MATCH("FieldName",FieldNameRowAddress/RangeName,FALSE)")

Самое смешное, что вы должны разрешить доступ к себе.

Я назвал свои диапазоны, которые импортирую, чтобы сделать его еще более надежным.

0 голосов
/ 27 апреля 2016

немного проще:

SELECT "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")&", COUNT("&SUBSTITUTE(ADDRESS(1,MATCH("detention",Sheet1!A1:B1,0),4),1,"")&") GROUP BY "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...