oracle查询表中所有字段,根据IDENTIFIERTYPE分组,然后组内根据AUDIT_VERSION降序排序,取每一组第一条
时间: 2023-09-15 14:20:41 浏览: 87
可以使用以下 SQL 查询语句来查询表中所有字段,根据 IDENTIFIERTYPE 分组,然后组内根据 AUDIT_VERSION 降序排序,取每一组第一条记录:
```
SELECT *
FROM (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY t.IDENTIFIERTYPE ORDER BY t.AUDIT_VERSION DESC) AS rn
FROM your_table t
)
WHERE rn = 1
```
在这个查询语句中,我们使用了 ROW_NUMBER() 和 OVER() 函数来为每个分组中的记录赋予一个连续的行号,并按照 AUDIT_VERSION 字段的值进行降序排序。然后,我们将这个查询结果作为一个子查询,并在外部查询中过滤出行号为 1 的记录,即每个分组中的第一条记录。
请将上述查询语句中的 your_table 替换为实际的表名。
相关问题
oracle查询表中所有字段,根据IDENTIFIERTYPE分组,然后租出组内AUDIT_VERSION最大的一条
可以使用以下 SQL 查询语句来查询表中所有字段,根据 IDENTIFIERTYPE 分组,然后找出每个分组中 AUDIT_VERSION 最大的一条记录:
```
SELECT t1.*
FROM your_table t1
INNER JOIN (
SELECT IDENTIFIERTYPE, MAX(AUDIT_VERSION) AS max_version
FROM your_table
GROUP BY IDENTIFIERTYPE
) t2 ON t1.IDENTIFIERTYPE = t2.IDENTIFIERTYPE AND t1.AUDIT_VERSION = t2.max_version
```
在这个查询语句中,我们首先使用一个子查询,对表进行分组,并找出每个分组中 AUDIT_VERSION 最大的值。然后,我们将这个子查询的结果与原始表进行连接,找出每个分组中 AUDIT_VERSION 最大的一条记录。
请将上述查询语句中的 your_table 替换为实际的表名。
oracle查询表中所有字段,根据SECID分组,然后租出组内AUDIT_VERSION最大的一条
可以使用以下的 Oracle SQL 语句查询表中所有字段,根据 SECID 分组,然后筛选出每组中 AUDIT_VERSION 最大的一条记录:
```
SELECT *
FROM (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY SECID ORDER BY AUDIT_VERSION DESC) AS rn
FROM your_table t
)
WHERE rn = 1;
```
解释一下这个 SQL 查询的过程:
1. 首先,使用子查询从原始表中选择所有字段,并通过 `ROW_NUMBER()` 函数为每个 SECID 分组内的记录编号,编号的顺序按照 AUDIT_VERSION 降序排列。
2. 接着,外层查询筛选出编号为 1 的记录,这些记录对应每个分组内 AUDIT_VERSION 最大的记录。
注意,需要将 `your_table` 替换为实际的表名。
阅读全文