SELECT DISTINCT 仅用于 Google 表格查询中的一列

Posted

技术标签:

【中文标题】SELECT DISTINCT 仅用于 Google 表格查询中的一列【英文标题】:SELECT DISTINCT for only one Column in Google Sheets Query 【发布时间】:2019-11-30 12:20:49 【问题描述】:

假设我有以下查询。

=query (A:C; "SELECT A, B, C")

如何修改它以使其不返回重复的 A?

换句话说,当多行包含相同的 A 时,我希望结果仅包含其中一行(最后一行)。应该允许在其他列中重复。

在这里我找到了 SQL Server 的答案,但我不知道如何在 Google Sheets Query 中执行此操作 DISTINCT for only one Column

我有什么:

A,             B,        C
lucas@abc.com, approved, 05/04/2019
lucas@abc.com, not set, 05/05/2019
lucas@abc.com, refunded, 05/06/2019
john@xyz.com, approved, 05/06/2019
john@xyz.com, approved, 05/07/2019
john@xyz.com, approved, 05/07/2019

我想要什么:

A,             B,        C
lucas@abc.com, refunded, 05/06/2019
john@xyz.com, approved, 05/07/2019

【问题讨论】:

【参考方案1】:

您可以使用SORTN,其中第三个参数设置为2

=SORTN(SORT(A1:C, 3, 1), ROWS(A:A), 2, 1, 0)

【讨论】:

我在 SORT 函数的第三个参数中将 1 更改为 0,现在它返回了我所期望的(仅显示最后一行),谢谢! @425nesp 当然。我们按第 3 列升序 (1) 对范围 A:C 进行排序。然后我们使用 SORTN 并返回 A 列的所有可能的 ROWS。然后我们使用 SORTN 的第二种模式按第一列对数据进行分组,但现在降序 (0)【参考方案2】:

试试下面的公式:

=unique(filter(A:C,match(A:A&C:C,query(query(A:C,"select A,max(C) where A<>'' group by A label max(C) ''"),"select Col1")&query(query(A:C,"select A,max(C) where A<>'' group by A label max(C) ''"),"select Col2"),0)))

截图:

【讨论】:

【参考方案3】:

截至今天,2020 年 6 月,查询语法发生了一些变化,对于没有得到上面公式的人,请尝试将其替换为此变体。

== 对于那些不知道这是什么的人。 Google 选择按行创建日期分组和排序的唯一值表

=UNIQUE(FILTER(A:C;MATCH(A:A&C:C;QUERY(QUERY(A:C;"select A, max(C) where A <> '' GROUP BY A label max(C) ''");"select Col1")&QUERY(QUERY(A:C;"select A,max(C) where A<>'' group by A label max(C) ''");"select Col2");0)))

【讨论】:

以上是关于SELECT DISTINCT 仅用于 Google 表格查询中的一列的主要内容,如果未能解决你的问题,请参考以下文章

sql语句要select某字段不重复的数据应该如何写?

二,本章讲解 SELECT DISTINCT 语句(distinct)

SQL SELECT DISTINCT 语句

SQL SELECT DISTINCT 语句

SQL SELECT DISTINCT 语句 用法

[2]SQL SELECT DISTINCT