如何选择重复项的最高记录并创建新表?

时间:2018-11-03 00:32:59

标签: google-bigquery

我有下表:

=====================
RecNum ID     Date
=====================
12345  188832 2045-01-07
33445  188832 2035-10-01
66789  188849 2047-10-18
77889  340520 2047-04-28
99776  340520 2047-04-28
=====================

我需要生成一个新表,其中只有一个ID与最新日期相对应。

如您所见,ID 188832有两个日期:2045-01-07和2035-10-01。 我只需要最新的一个:2045-01-07。

188849只有一个日期,应该保持原样。 340520有两个具有相同日期的记录-我只需要选择一个。

RecNum是唯一的。

1 个答案:

答案 0 :(得分:1)

ROW_NUMBER应该在这里工作:

SELECT RecNum, ID, Date
FROM
(
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) rn
    FROM yourTable t
) t
WHERE rn = 1;

请注意,在ID = 340520的情况下,以上查询将任意选择两个记录之一。如果您有确定如何处理此类联系的逻辑,则可以修改查询。