Oracle:使用 GROUP BY 时将 CLOB 添加到选择中

Oracle: add CLOB to selection when using GROUP BY

我有一个类似于

的查询
SELECT
  s.id,
  max (s.status) AS status,
  s.clob
FROM
  my_table s
INNER JOIN
 my_table_2 s2
ON
  s.id = s2.id  
GROUP BY
  s.id
ORDER BY
  s.status DESC

真正的查询有点复杂,但在这里不相关。我遇到的问题是,如果我从 selection 中省略 s.clob,它工作正常。添加时出现错误:

not a GROUP BY expression"

但我无法对 clob 进行分组。我怎样才能 select 这个想要的数据?

编辑:请注意,一个问题是ìdand statusstatus` 包含重复项,例如。两者是相同的(对于 clob 列也是如此)。我只想 select 相同的行之一但不同的也不适用于 clob

试试这个

select R.Id, R.Status, R.clob
  from (select row_number() over(partition by s.id order by status desc) Rnum,
                s.id, s.status, s.clob
           from my_table s
          inner join my_table_2 s2 on s.id = s2.id) R
 where R.Rnum = 1

在这里,您要为每个重复的行组分配 rownum 值。并且在结果集中每组只选择一个值。希望这会帮助你。