我有类似
的查询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
答案 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值。在结果集中,每组只选择一个值。希望这会帮助你。