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

时间:2015-01-30 09:33:04

标签: oracle group-by clob

我有类似

的查询
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

真正的查询有点复杂,但在这里并不重要。我遇到的问题是,如果我从选择中省略s.clob,它可以正常工作。当我添加它时,我收到一个错误:

not a GROUP BY expression"

但是我不能分组。如何选择所需数据?

编辑:请注意,问题是“and status状态”包含重复项,例如。两者都是相同的(对于clob列也是如此)。我只想选择一个相同的行,但不同也不适用于clob

1 个答案:

答案 0 :(得分:3)

试试这个

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值。在结果集中,每组只选择一个值。希望这会帮助你。