Google sheets 正在尝试在GoogleSheets上的查询结果中包含其他列

Google sheets 正在尝试在GoogleSheets上的查询结果中包含其他列,google-sheets,google-query-language,Google Sheets,Google Query Language,我使用谷歌表单,并使用以下公式,没有任何问题: =QUERY(Sheet!A:D,"select A, max(B) where not B is null group by A label A 'Client', max(B) 'Most Recent'") 显然,这将返回引用数据的A列和B列 但是,我还想返回C列中相应的单元格 样本数据: 使用这个例子,我想看到的是单元格G2中填充了“Pizza”(即来自C3),以此类推 我使用的公式正确吗?我需要更改什么?您尝试执行的操作不太像SQL,因

我使用谷歌表单,并使用以下公式,没有任何问题:

=QUERY(Sheet!A:D,"select A, max(B) where not B is null group by A label A 'Client', max(B) 'Most Recent'")
显然,这将返回引用数据的A列和B列 但是,我还想返回C列中相应的单元格

样本数据:

使用这个例子,我想看到的是单元格G2中填充了“Pizza”(即来自C3),以此类推


我使用的公式正确吗?我需要更改什么?

您尝试执行的操作不太像SQL,因为
max(B)
不指向任何特定行:它只是所选行中B的最大值。这个值可以通过几行获得,使得C,D的选择不明确。我不认为一个查询就可以做到这一点

下面是一个带有
unique
和几个
query
命令的实现

在E2中,输入
=unique(A:A)
以获取唯一客户端名称的列表。 在F2中,输入

=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")
=query(A$2:D101, "select B,C,D where A ='"&F2&"' order by B desc limit 1")
把这个公式往下拉。这将选择值和E2匹配的所有行,并选择最大B值的行

您不希望在这些查询的输出中有标题行,因此可以添加标签B“”、C“”、D“”,或者不将标题行包括在查询范围中


按C、D分组的版本 要在单个查询中选择C和D,请展开
select
子句

select A, max(B), C, D 
这将要求包括
group by
条款中的内容:

group by A, C, D
公式将是

=QUERY(A:D,"select A, max(B), C, D where not B is null group by A, C, D label A 'Client', max(B) 'Most Recent'")

这确实意味着要分组在一起的行将是那些不仅A而且C和D都相等的行。

您尝试执行的操作不是很像SQL,因为
max(B)
不指向任何特定行:它只是所选行中B的最大值。这个值可以通过几行获得,使得C,D的选择不明确。我不认为一个查询就可以做到这一点

下面是一个带有
unique
和几个
query
命令的实现

在E2中,输入
=unique(A:A)
以获取唯一客户端名称的列表。 在F2中,输入

=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")
=query(A$2:D101, "select B,C,D where A ='"&F2&"' order by B desc limit 1")
把这个公式往下拉。这将选择值和E2匹配的所有行,并选择最大B值的行

您不希望在这些查询的输出中有标题行,因此可以添加标签B“”、C“”、D“”,或者不将标题行包括在查询范围中


按C、D分组的版本 要在单个查询中选择C和D,请展开
select
子句

select A, max(B), C, D 
这将要求包括
group by
条款中的内容:

group by A, C, D
公式将是

=QUERY(A:D,"select A, max(B), C, D where not B is null group by A, C, D label A 'Client', max(B) 'Most Recent'")

这确实意味着要分组在一起的行将是那些不仅A而且C和D都相等的行。

以下是我最后完成的工作

在E1中,输入
=unique(A:A)
以获取唯一客户端名称的列表。在F2中,输入

=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")
=query(A$2:D101, "select B,C,D where A ='"&F2&"' order by B desc limit 1")
把这个公式往下拉。这将选择值和E2匹配的所有行,并选择最大B值的行


您不希望在这些查询的输出中有一个标题行,所以只需在标题行中添加所需的文本。

以下是我最后完成的工作

在E1中,输入
=unique(A:A)
以获取唯一客户端名称的列表。在F2中,输入

=query(A:D, "select B,C,D where A ='"&E2&"' order by B desc limit 1")
=query(A$2:D101, "select B,C,D where A ='"&F2&"' order by B desc limit 1")
把这个公式往下拉。这将选择值和E2匹配的所有行,并选择最大B值的行


您不希望在这些查询的输出中有标题行,所以只需在标题行中添加所需的文本即可。

一种可能的单公式解决方案:


=ArrayFormula(IFERROR(VLOOKUP(唯一的(A2:A),排序(A2:C,2,0),{1,2,3},0))
一个可能的公式解决方案:


=ArrayFormula(iError(VLOOKUP(UNIQUE(A2:A),SORT(A2:C,2,0),{1,2,3},0))

请不要用
谷歌表格
标记
excel
。我不使用谷歌电子表格,但我可以查找它。编辑:lol被切断XDWow这是相当密集的,但猜测你只需要选择C和D?请不要用
googlesheets
标记
excel
。我不使用谷歌电子表格,但我可以查找它。编辑:lol被切断XDWow这是相当密集的,但猜测你只需要选择C和D?这几乎奏效了。问题是,结果包括了我需要的所有结果,在A列中重复的值中,只过滤到最大值(B)。这有意义吗?当A重复时,C和D中的值也重复吗?如果是,它们将按此查询分组。如果否,您希望从C和D中选择什么?使用我的原始帖子中的公式,查询A中的重复值以获得最大值(B),并将其传递到输出。我希望C和D中的数据对应于A中每个副本中最大(B)的行,仍然过滤掉不是最大(B)的重复A行。这仍然没有很好地定义。如果有两行达到最大值(B),并且它们有不同的C条目,那该怎么办?我在上面的原始帖子中添加了一个链接,链接到一个包含示例数据的电子表格中。我想要的是一个公式,它将,例如,用文本“Pizza”填充单元格G2,这几乎奏效了。问题是,结果包括了我需要的所有结果,在A列中重复的值中,只过滤到最大值(B)。这有意义吗?当A重复时,C和D中的值也重复吗?如果是,它们将按此查询分组。如果否,您希望从C和D中选择什么?使用我的原始帖子中的公式,查询A中的重复值以获得最大值(B),并将其传递到输出。我希望C和D中的数据对应于A中每个副本中最大(B)的行,仍然过滤掉不是最大(B)的重复A行。这仍然没有很好地定义。如果有两行达到了最大值(B),并且它们有不同的C条目呢?我在上面的原始帖子中添加了一个链接到电子表格