SYNTAX_ERROR: «LastName» должно быть составным выражением или появляться в предложении GROUP BY - PullRequest
0 голосов
/ 26 января 2020

У меня есть две таблицы: main_table & staging_table, main_table содержит исходные данные, тогда как staging_table содержит несколько обновленных записей, в которые мне нужно добавить данные main_table, и для этого я использую уникальный идентификатор - 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 Афина я получаю следующую ошибку , SYNTAX_ERROR: «LastName» должно быть агрегированным выражением или появляться в предложении GROUP BY

1 Ответ

1 голос
/ 26 января 2020

Я подозреваю, что другие столбцы могут отличаться, и вам действительно нужна полная запись с самой последней даты. В этом случае используйте 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;

. Выберите одну строку на PersonId с самой последней датой. Столбцы взяты из самой последней строки.

...