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
一行,最近的日期。这些列来自最近的行。
我有两个表,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
一行,最近的日期。这些列来自最近的行。