我继承了一个数据库,其中一些表包含多个相同的值。
表A
aId(PK),RowId,Value,CreateDate
表格行 RowId(PK)
表A(20M条目)包含许多相同的RowId和Value条目(尽管CreateDate会有所不同),每个RowId通常有20个相同的条目。我想做这个查询:
select Row.RowId, DistinctA.Value
from Row
left join (select distinct RowId, Value from A) DistinctA
on DistinctA.RowId=Row.RowId
最好的方法是什么?
答案 0 :(得分:0)
这是你想要的吗?
select a.*
from (select a.*,
row_number() over (partition by rowid, value order by createdate desc) as seqnum
from a
) a
where seqnum = 1;
这将返回每个组合的最新行(对于最旧的行使用order by createdate asc
)。