SYNTAX_ERROR: '"LastName"' must be an aggregate expression or appear in GROUP BY clause

SYNTAX_ERROR: '"LastName"' must be an aggregate expression or appear in GROUP BY clause

我有两个表,main_table & staging_table, main_table 包含原始数据,而 staging_table 包含我必须添加到 main_table 数据中的少数更新记录,为此我使用唯一 ID -PersonID 和到达时间 - 日期 下面是我能够执行到 SQL

中的查询
SELECT PersonID, LastName, FirstName, Address, City, max(date) 
from 
(
select PersonID, LastName, FirstName, Address, City, date from main_table
UNION
select PersonID, LastName, FirstName, Address, City, date from staging_table
) as t
GROUP by t.PersonID;

但是在执行 AWS Athena 时,出现以下错误, SYNTAX_ERROR: '"LastName"' 必须是聚合表达式或出现在 GROUP BY 子句中

我怀疑其他列可能不同,您实际上想要最近日期的完整记录。如果是这种情况,请使用 row_number():

select p.*
from (select p.*,
             row_number() over (partition by personid order by date desc) as seqnum
      from ((select PersonID, LastName, FirstName, Address, City, date
             from main_table
            ) union all
            (select PersonID, LastName, FirstName, Address, City, date
             from staging_table
            )
           ) p
     ) p
where seqnum = 1;

这 select 每 PersonId 一行,最近的日期。这些列来自最近的行。