下面是我的样本数据摘录。而且我想删除重复的行(在本示例中为最后一行),如下所示。我想知道如何在选择查询中没有多余的记录的情况下轻松获取它
ID YEAR CNT VOLUME INT_VOLUME RATE INT_RATE GM GM_RCNT
545 2016 12 5508 5508 1604 1604 0.71 NULL
545 2017 5 1138 2731 824 1977 0.28 -50.42
545 2018 NULL NULL -45 2351 NULL NULL NULL
626 2016 12 679862 679862 252693 252693 0.63 NULL
626 2017 12 705365 705365 282498 282498 0.6 3.75
626 2018 12 707472 707472 291762 291762 0.59 0.3
626 2018 NULL NULL 711372 NULL 295186 NULL NULL --Filter such rows in select
答案 0 :(得分:2)
您可以使用id
为每个row_number()
选择一年:
select t.*
from (select t.*,
row_number() over (partition by id, year order by id) as seqnum
from t
) t
where seqnum = 1;
这将选择保留任意行。您可以调整order by
以细化您要保留的行。您可以按rowid
订购,但不能保证它是“最早”的行。为此,您需要一个日期或序列列。