如何按号码为每个组选择最新日期?

杰里米

我一直在这个问题上停留一段时间,我想知道社区是否能够引导我朝正确的方向发展?

我有一些标签ID需要分组,例外情况(列:已删除)需要保留在结果中。之后,对于每个分组的标签ID,我需要选择一个具有最新日期的标签ID。我怎样才能做到这一点?下面的例子:

ID  |  TAG_ID  |  DATE     |  DELETED 
1   |  300     |  05/01/20 |  null
2   |  300     |  03/01/20 |  04/01/20
3   |  400     |  06/01/20 |  null
4   |  400     |  05/01/20 |  null
5   |  400     |  04/01/20 |  null
6   |  500     |  03/01/20 |  null
7   |  500     |  02/01/20 |  null

我正在尝试达到以下结果:

ID  |  TAG_ID  |  DATE     |  DELETED 
1   |  300     |  05/01/20 |  null
2   |  300     |  03/01/20 |  04/01/20
3   |  400     |  06/01/20 |  null
6   |  500     |  03/01/20 |  null

因此,首先,如果“已删除”列中有一个日期,我希望该行出现。其次,对于每个唯一的标签ID,我希望显示最新的“ DATE”行。

希望这个问题很清楚。感谢您的反馈和帮助!提前非常感谢。

戈登·利诺夫

您的结果似乎是这样的:

select t.*
from (select t.*,
             row_number() over (partition by tag_id, deleted order by date desc) as seqnum
      from t
     ) t
where seqnum = 1 or deleted is not null;

这需要一行deleted is null-最近的一行。它还将每一行保持在哪里deleted is not null

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章