QUERY公式,仅根据时间戳返回每封电子邮件的最新记录

问题描述 投票:0回答:1

具有此Google表格QUERY公式:

=QUERY(FORMULARIO!A4:Q, " select G,E,K,M,N,L,O,Q where not upper(J) = 'PAGÓ' and A > date '"&TEXTO(HOY()-3, "yyyy-mm-dd")&"' and E is not null and O is not null and Q contains '@' and not Q matches '"&TEXTJOIN("|", 1, QUERY(FORMULARIO!J4:Q, "select Q where upper(J) = 'PAGÓ' ", 0))&"'", 0)

如何仅退回每封电子邮件(Q列)的一条记录,即最近的A列查看日期的记录?

测试表:

https://docs.google.com/spreadsheets/d/1jBMo42cbylrNHcf9b9QLI4oDw0H0oomCGrEAuPsBlA8/edit#gid=1465616509

[选项卡下的“结果”是有效的查询,在该查询中,我仅需要根据新近度过滤出重复项,仅保留最新的重复项,并且唯一标识符为电子邮件

google-sheets google-sheets-formula google-sheets-query
1个回答
2
投票

编辑

(遵循OP的共享演示页)

使用的公式为:

=SORT(SORTN(QUERY(FORMULARIO!A4:Q, " select G,E,K,M,N,L,O,Q where not upper(J) = 'PAGÓ' and A > datetime '"&TEXTO(AHORA()-3, "yyyy-mm-dd HH:mm:ss")&"' and E is not null and O is not null and Q contains '@' and not Q matches '"&TEXTJOIN("|", 1, QUERY(FORMULARIO!J4:Q, "select Q where upper(J) = 'PAGÓ' ", 0))&"'", 1),9^9,2,2,1),1,1)

更改之处:

  • 我们使用SORTN函数包装了您的原始查询,以查找和排除Q列中所有重复的电子邮件,但基于A列中基于时间戳的最新电子邮件除外。
  • 我们花了更多时间用SORT函数包装结果,以使最终结果按时间戳排序。

专业提示通过更改以下内容,在主查询中也做了额外更改and A > date '"&TEXT(HOY()-3, "yyyy-mm-dd")&"'toand A > datetime '"&TEXT(AHORA()-3, "yyyy-mm-dd HH:mm:ss")&"'因此,我们将TODAY更改为NOW

通过执行此操作,我们使用时间戳中存在的日期和时间而不是仅使用日期来计数日期

(仍有一些小的改进/变更的余地,但超出了此问题的范围。


原始答案

理所当然地认为您的公式可以按预期工作((如果没有测试表,则无法对其进行检查),但是会产生多行,您可以在公式末尾使用limit子句。

limit
© www.soinside.com 2019 - 2024. All rights reserved.