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

SQL对数据集进行分区并拾取,直到列值更改为每个数据集中的特定值,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一组行,如下所示 选择[Id] 实体 时间 密码 ,分区上的行数按实体顺序按时间描述行数 从实体示例 按实体排序,行号描述 现在,目标是检索每个实体类型中的行,直到代码列值变为拒绝。 条件是在每个实体类型中按时间列降序排序,并选择最上面的行,直到代码列值变为拒绝 我们如何在SQL中实现这一点 这是要实现的结果快照 注意:由于隐私问题,我创建了一个示例数据集并上传了它。因此,与每个实体相关的实体数和行数是不同的您可以使用相关子查询: select ee.* from EntityExample

我有一组行,如下所示

选择[Id] 实体 时间 密码 ,分区上的行数按实体顺序按时间描述行数 从实体示例 按实体排序,行号描述

现在,目标是检索每个实体类型中的行,直到代码列值变为拒绝。 条件是在每个实体类型中按时间列降序排序,并选择最上面的行,直到代码列值变为拒绝

我们如何在SQL中实现这一点

这是要实现的结果快照


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

您可以使用相关子查询:

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

您可以使用相关子查询:

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