MAX(policy_status_code) OVER (PARTITION BY policy_no ORDER BY policy_version_no DESC)我想取policy_version_no最大对应的policy_status_code,sql要怎么改;
时间: 2024-12-23 22:27:45 浏览: 5
你想查询每个保单(policy_no)下,按照版本号(policy_version_no)降序排列的情况下,每个版本号对应的最大(status_code)状态码。在SQL中,你可以使用窗口函数ROW_NUMBER()或者RANK()配合MAX()来实现这个需求。这里假设你使用的是Oracle、SQL Server或PostgreSQL等支持窗口函数的数据库。
```sql
SELECT policy_no, policy_version_no, policy_status_code
FROM (
SELECT policy_no, policy_version_no, policy_status_code,
ROW_NUMBER() OVER (PARTITION BY policy_no ORDER BY policy_version_no DESC) as rn,
MAX(policy_status_code) OVER (PARTITION BY policy_no) as max_status_code
FROM your_table_name
) subquery
WHERE rn = 1;
```
在这个查询中,内部子查询首先对每个保单分组并按版本号排序,然后计算每个组内的行号和最大状态码。外部查询则只选择行号为1的记录,即每个版本下的最大状态码。
阅读全文