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 status
status` 包含重复项,例如。两者是相同的(对于 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 值。并且在结果集中每组只选择一个值。希望这会帮助你。
我有一个类似于
的查询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 status
status` 包含重复项,例如。两者是相同的(对于 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 值。并且在结果集中每组只选择一个值。希望这会帮助你。