sql server—sql对数据集进行分区并拾取,直到列值更改为每个数据集中的特定值

t9aqgxwy  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(294)

我有一组行如下
选择[id],entity,time,code,row\u number()over(partition by entity order by time desc)rownumber from entityexample order by entity,rownumber desc

现在,目标是检索每个实体类型中的行,直到代码列值变为“denied”。条件是在每个实体类型中按时间列降序排序,并选择最顶层的行,直到代码列值变为“拒绝”
如何在sql中实现这一点?
这是要实现的结果快照

注意:由于隐私问题,我创建了一个示例数据集并上传了它。因此与每个实体相关的实体数和行数是不同的

hsgswve4

hsgswve41#

可以使用相关子查询:

select ee.*
from EntityExample ee
where ee.time < (select min(ee2.time)
                 from EntityExample ee2
                 where ee2.entity = ee.entity and
                       ee2.code = 'Denied'
                );

相关问题