SQL 对数据集进行分区并选择,直到列值更改为每个数据集中的特定值
SQL partition the dataset and pick until a column value changes to a particular value in each dataset
我有一组行如下
select [Id]
, 实体
, 时间
, 代码
, ROW_NUMBER() OVER (PARTITION BY Entity ORDER BY Time DESC) RowNumber
来自实体示例
按实体排序,行号 DESC
现在,目标是检索每个实体类型中的行,直到代码列值更改为 "Denied"。
条件是在每个实体类型中按时间列降序排序并选择最上面的行,直到代码列值更改为 "Denied"
我们如何在 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 [Id] , 实体 , 时间 , 代码 , ROW_NUMBER() OVER (PARTITION BY Entity ORDER BY Time DESC) RowNumber 来自实体示例 按实体排序,行号 DESC
现在,目标是检索每个实体类型中的行,直到代码列值更改为 "Denied"。 条件是在每个实体类型中按时间列降序排序并选择最上面的行,直到代码列值更改为 "Denied"
我们如何在 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'
);