如何使用查询(Google表格)连接字符串并多次选择相同的列

时间:2018-08-21 05:17:45

标签: google-sheets google-query-language

我正在尝试为甘特图生成一张表。表应具有以下格式: https://developers.google.com/chart/interactive/docs/gallery/ganttchart#data-format

因此,我需要像taks ID一样的任务名称,但是在查询中我不能两次使用Col1(我收到错误)

=QUERY({Tab1;Tab1};"select Col1,Col1,Col5,Col16,Col17 WHERE Col16>now() ORDER BY Col5 DESC,Col17 ";0)

第二点是,结果也无法合并两列,所以它不起作用:

=QUERY({Tab1;Tab1};"select Col1+Col7,Col1,Col5,Col16,Col17 WHERE Col16>now() ORDER BY Col5 DESC,Col17 ";0)

这是我的数据和2个结果,我需要通过QUERY获得 https://docs.google.com/spreadsheets/d/1CZYgfYo6oIeONZOH6ZR5rOW615HuH4ICaoe7lj0dapw/edit#gid=0

在真正的SQL中,这些都是微不足道的事情,难道没有办法在Google Query中直接做到这一点吗?到目前为止,我已经找到了QUERY和ARRAYFORMULA的组合,但是随后有非常复杂的查询-突变体。不容易吗?

2 个答案:

答案 0 :(得分:1)

您不需要查询,只需要数组。 您将从以下代码中获得第一个结果:

={ARRAYFORMULA(B3:B&" "&C3:C)\A3:A}

此代码的第二个结果:

={A3:A\A3:A\B3:B1}

根据您的示例,我假设您没有使用美国电子表格设置。 如果是这样,则必须将公式更改为:

第一:

={ARRAYFORMULA(B3:B&" "&C3:C),A3:A} 

第二:

={A3:A,A3:A,B3:B}

链接到工作示例:https://docs.google.com/spreadsheets/d/1eMkOkyFwvDeYSy-8UlhQum4OWcb-4WJqGxy_CXM8pVs/edit?usp=sharing


我看到您希望在实际工作表中将某些数据与now()进行比较。您可以使用我建议作为查询源的数组轻松完成此操作。会有这样的内容(当然,现在不起作用-仅是一个示例-数组只有2列,而不是15列):

=QUERY({ARRAYFORMULA(B3:B10&" "&C3:C10)\A3:A10};"select * where Col15>now()";0)

关于查询-您无法对包含字符串的列执行自动操作。查看文档:{​​{3}}

答案 1 :(得分:0)

“我不能两次使用Col1(出现错误)”
您可以复制您的数据以解决此问题。

QUERY({Tab1 Column 1\Tab1 Column 1};"Select Col1, Col2......"

“ Tab1列1”现在为Col1和Col2

“第二点是,结果也无法合并两列,因此不起作用:”

是的,可能列的添加结果“选择Col1 + Col7 ......”是正确的。