我一直在这个问题上停留一段时间,我想知道社区是否能够引导我朝正确的方向发展?
我有一些标签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] 删除。
我来说两句