在Oracle中选择子查询的最高值

琼妮

我有以下查询:

SELECT P.ID,
(
SELECT F.VALUE_ID FROM FORM F
INNER JOIN F.PERSON_ID = P.ID
) AS LATEST_FORM
FROM FORM F1 INNER JOIN PERSON P
ON P.ID = F1.PERSON_ID
WHERE F1.NO_PCP_IND IS NOT NULL
ORDER BY P.ID

每个人可以有多个表格,而我只是想获取他们提交的最新表格。我尝试在子查询中使用ROWNUM,但我理解为什么它不起作用,但不确定如何使它通过Oracle生成正确的结果集。

戈登·利诺夫

这是查询:

SELECT P.ID,
       (SELECT F.VALUE_ID
        FROM FORM F INNER JOIN
             F.PERSON_ID = P.ID
       ) AS LATEST_FORM
FROM FORM F1 INNER JOIN
     PERSON P
     ON P.ID = F1.PERSON_ID
WHERE F1.NO_PCP_IND IS NOT NULL
ORDER BY P.ID;

除了语法上不正确之外,如果可行,这还将返回每人用户一行我认为您的原始查询应该更像:

SELECT P.ID,
       (SELECT F.VALUE_ID
        FROM FORM F
        WHERE F1.NO_PCP_IND IS NOT NULL AND F.PERSON_ID = P.ID AND
              ROWNUM = 1
       ) AS LATEST_FORM
FROM PERSON P
ORDER BY P.ID;

这不能解决您的问题,因为您想保留最后一个值。为此,请使用以下keep功能:

SELECT P.ID,
       (SELECT MAX(F.VALUE_ID) KEEP (DENSE_RANK FIRST ORDER BY XXX DESC)
        FROM FORM F
        WHERE F1.NO_PCP_IND IS NOT NULL AND F.PERSON_ID = P.ID
       ) AS LATEST_FORM
FROM PERSON P
ORDER BY P.ID;

在这种情况下XXX,该列的名称定义了每个人的表单顺序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从多个值中选择最高值

来自分类Dev

从一个哈希元素具有最高值的数组中选择单个哈希

来自分类Dev

如何从Pandas DataFrame中的每个组中选择具有最高值的N行

来自分类Dev

从SQL表中选择一个表的最高值

来自分类Dev

在多个样本中选择具有最高值的类别变量

来自分类Dev

SQL选择5个最高值

来自分类Dev

选择表格中的最高值

来自分类Dev

Spark选择RDD中的最高值

来自分类Dev

Aerospike查询返回最高值

来自分类Dev

使用条件查询或过滤最高值

来自分类Dev

从 XSLT 子查询中选择不同的值

来自分类Dev

MySQL 子查询没有给我 MAX 或 ORDER BY LIMIT 1 的最高值

来自分类Dev

从同一表的行中选择值和下一个最高值

来自分类Dev

从同一表的行中选择值和下一个最高值

来自分类Dev

数组的最高值

来自分类Dev

针对SQL中的每个记录选择最高值

来自分类Dev

选择具有某些属性最高值的实体

来自分类Dev

仅选择特定列具有最高值的行

来自分类Dev

选择具有最高值的行并返回行名

来自分类Dev

Pyspark-分组并选择N个最高值

来自分类Dev

根据其位置选择数据帧的p最高值

来自分类Dev

仅选择特定列具有最高值的行

来自分类Dev

SQL选择唯一不同的最高值

来自分类Dev

Sql按列最高值选择不同的行

来自分类Dev

如何根据多列选择最高值?

来自分类Dev

如何选择具有最高值的标题?

来自分类Dev

在mysql中获得查询结果的最高值

来自分类Dev

用于查找集合最高值的查询代码?

来自分类Dev

从删除子查询中选择返回值