sql - SQL 比较具有重复 ID 的行并返回具有最低序列号的行
问题描述
伸出援手。我已经看到很多关于如何使用 DUPLICATE 的答案,但并不完全是我需要的。假设我的查询结果如下所示。
Incident_No Open_Approval_Step Approval_ID
------------- -------------------- -------------------
1 3 Tech
1 4 Cust_Serv
2 1 Incident_Recorder
2 2 Estimation
2 3 Tech
3 4 Cust_Serv
3 5 Mgmt
3 6 Closure
对于每个事件编号,我需要一个具有最小编号批准步骤的行。所以结果应该是这样的。
Incident_No Open_Approval_Step Approval_ID
------------- -------------------- -------------------
1 3 Tech
2 1 Incident_Recorder
3 4 Cust_Serv
编辑这是我最后想出的
SELECT DISTINCT
MIN(OPEN_APPROVAL_STEP) OVER(PARTITION BY INCIDENT_NO ORDER BY OPEN_APPROVAL_STEP ASC) AS CUR_APP_STEP,
INCIDENT_NO
FROM T
解决方案
您可以使用row_number()
:
select *
from (
select
t.*,
row_number() over(partition by incident_no order by open_approval_step) rn
from mytable t
) t
where rn = 1
在事件编号和批准步骤中仅添加一个额外的列,另一种选择是聚合和 Oracle 的keep
语法:
select
incident_no,
min(open_approval_step) open_approval_step,
min(approval_id) keep(dense_rank first order by open_approval_step) approval_id
from mytable
group by incident_no
推荐阅读
- julia - 如何在 Julia 中创建文件?
- elasticsearch - 弹性搜索排除通配符查询异常
- questdb - QuestDB(嵌入式)TableWriter 线程安全吗?
- angular - Dotnet 核心角度 cookie 身份验证
- powershell - 高效解析键值数据
- spring-boot - 如何在运行时使用 Spring Boot 更改数据源
- xml - 使用 XSLT 显示来自 XSD 的选项和来自 XML 的默认值
- python - 使用来自另一个函数的列表会将其传递为空,为什么?
- javascript - 启用右键单击文本编辑器
- mongodb - 如何对一个属性使用 $or 运算符,然后在 mongodb 中不将其用于另一个属性