如何使用 Query (Google Sheets) 多次连接字符串和 select 相同的列
How to concatenate strings and select the same columns multiple times using Query (Google Sheets)
我正在尝试为甘特图生成 table。 Table 应具有以下格式:
https://developers.google.com/chart/interactive/docs/gallery/ganttchart#data-format
因此,我需要与任务 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 和 ARRAYFORMULA 的组合,但是还有非常复杂的查询 - 突变体。还不简单?
"I can't use Col1 twice (I get error)"
您可以复制您的信息来解决这个问题。
QUERY({Tab1 Column 1\Tab1 Column 1};"Select Col1, Col2......"
"Tab1 Column 1" 现在是 Col1 和 Col2
"The second point is that it is also not possible to merge two columns as a result, so it doesn't work:"
是的,添加列的结果是可能的"select Col1+Col7......"是正确的。
您不需要查询,只需要数组。
您将从这段代码中得到第一个结果:
={ARRAYFORMULA(B3:B&" "&C3:C)\A3:A}
此代码的第二个结果:
={A3:A\A3:A\B3:B1}
根据您的示例,我假设您没有使用美国价差sheet 设置。
如果是这样,必须将公式更改为:
第一个:
={ARRAYFORMULA(B3:B&" "&C3:C),A3:A}
第二个:
={A3:A,A3:A,B3:B}
Link 工作示例:https://docs.google.com/spreadsheets/d/1eMkOkyFwvDeYSy-8UlhQum4OWcb-4WJqGxy_CXM8pVs/edit?usp=sharing
我看到在您的真实 sheet 中,您想将一些数据与 now() 进行比较。您可以使用我建议的数组作为查询源轻松地做到这一点。你会有这样的东西(当然现在它不起作用 - 这只是一个例子 - 一个数组只有 2 列,而不是 15):
=QUERY({ARRAYFORMULA(B3:B10&" "&C3:C10)\A3:A10};"select * where Col15>now()";0)
关于查询 - 您不能对包含字符串的列执行算术运算。查看文档:https://developers.google.com/chart/interactive/docs/querylanguage#arithmetic-operators
我正在尝试为甘特图生成 table。 Table 应具有以下格式: https://developers.google.com/chart/interactive/docs/gallery/ganttchart#data-format
因此,我需要与任务 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 和 ARRAYFORMULA 的组合,但是还有非常复杂的查询 - 突变体。还不简单?
"I can't use Col1 twice (I get error)"
您可以复制您的信息来解决这个问题。
QUERY({Tab1 Column 1\Tab1 Column 1};"Select Col1, Col2......"
"Tab1 Column 1" 现在是 Col1 和 Col2
"The second point is that it is also not possible to merge two columns as a result, so it doesn't work:"
是的,添加列的结果是可能的"select Col1+Col7......"是正确的。
您不需要查询,只需要数组。 您将从这段代码中得到第一个结果:
={ARRAYFORMULA(B3:B&" "&C3:C)\A3:A}
此代码的第二个结果:
={A3:A\A3:A\B3:B1}
根据您的示例,我假设您没有使用美国价差sheet 设置。 如果是这样,必须将公式更改为:
第一个:
={ARRAYFORMULA(B3:B&" "&C3:C),A3:A}
第二个:
={A3:A,A3:A,B3:B}
Link 工作示例:https://docs.google.com/spreadsheets/d/1eMkOkyFwvDeYSy-8UlhQum4OWcb-4WJqGxy_CXM8pVs/edit?usp=sharing
我看到在您的真实 sheet 中,您想将一些数据与 now() 进行比较。您可以使用我建议的数组作为查询源轻松地做到这一点。你会有这样的东西(当然现在它不起作用 - 这只是一个例子 - 一个数组只有 2 列,而不是 15):
=QUERY({ARRAYFORMULA(B3:B10&" "&C3:C10)\A3:A10};"select * where Col15>now()";0)
关于查询 - 您不能对包含字符串的列执行算术运算。查看文档:https://developers.google.com/chart/interactive/docs/querylanguage#arithmetic-operators