Как использовать CONCAT в QUERY?

У меня есть таблица:

 A     |   B      |     C
BEN    |  MOSKOW  |    YES
ANTON  |  IRKUTSK |     NO
VIKTOR |  PARIS   |    YES
BEN    |  PARIS   |    YES
ANTON  |  TORONTO |     NO
DON    | TORONTO  |    YES
ANNA   | IRKUTSK  |    YES
BEN    |  MOSKOW  |     NO

и попробовал формулу:

=UNIQUE(query(A:C; "Select A,B,C where A contains 'BEN' OR A contains 'ANTON' order by A"))

и формула массива:

=arrayformula(UNIQUE(query(A:C; "Select A,B,C where A contains 'BEN' OR A contains 'ANTON' order by A")))

но результаты в столбцах:

ANTON  |  IRKUTSK |     NO
ANTON  |  TORONTO |     NO
BEN    |  MOSKOW  |    YES
BEN    |  PARIS   |    YES
BEN    |  MOSKOW  |     NO

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

ANTON IRKUTSK NO
ANTON TORONTO NO
BEN MOSCOW YES
BEN PARIS YES
BEN MOSKOW NO

person Антон Смольный    schedule 03.03.2017    source источник
comment
вы можете использовать СЦЕПИТЬ (A`` B)   -  person MSD    schedule 03.03.2017
comment
=UNIQUE(query(A:C; "Select CONCATENATE(A," ", B," ", C) where A contains 'BEN' OR A contains 'ANTON' order by A")) не работает   -  person Антон Смольный    schedule 03.03.2017
comment
В листах есть CONCAT, но нет в Google Query, вот в чем вопрос   -  person benfromredant    schedule 08.03.2019


Ответы (2)


В Google Таблицах query нет concat опции.

Решение, предложенное JPV, может вам подойти: https://stackoverflow.com/a/29799384/5372400

использовать формулу:

=ARRAYFORMULA( SUBSTITUTE( trim(transpose(query(transpose(_your_query_here_),,COLUMNS(_your_query_here_))))," "," → ") )

Замените " → " на пробел " ", чтобы объединить результат с пробелом.


Подробнее о SQL в Таблицах:

https://developers.google.com/chart/interactive/docs/querylanguage

person Max Makhrov    schedule 03.03.2017

Дважды используйте транспонирование.

=transpose(query(transpose(_you query_);;COLUMNS(_you query_)))

Для примера из моего вопроса:

=transpose(query(transpose(UNIQUE(query(A:C; "select * where A contains 'BEN' OR A contains 'ANTON' order by A")));;COLUMNS(UNIQUE(query(A:C; "select * where A contains 'BEN' OR A contains 'ANTON' order by A")))))

Результат:

ANTON IRKUTSK NO
ANTON TORONTO NO
BEN MOSCOW YES
BEN PARIS YES
BEN MOSKOW NO
person Антон Смольный    schedule 06.03.2017