我遇到了编写查询的问题,该查询会在列中收集组,然后按数字选择其中一个。 一个好人(@sstan)给了我这个:
select your_col
from (select your_col,
row_number() over (order by your_col) as rn
from your_table
group by your_col)
where rn = 2
它有效。但是,我的查询似乎需要考虑其他列。现在,它看起来像这样:
select MAINCOL, sum(some_col+other_col) as together_col, count(another_col)
from my_table
where date_col >= next_day(trunc(sysdate), 'MONDAY') - 14
and date_col < next_day(trunc(sysdate), 'MONDAY') - 7
group by MAINCOL, other_col, together_col
order by MAINCOL
因此,挑战是使用以下内容扩展上层查询。虽然我无法使它工作,但看起来很简单..
答案 0 :(得分:0)
您可以尝试使用内部表别名
SELECT your_col,rn.your_col,rn.your_col2,rn.your_col3
FROM(select your_col,your_col2,your_col3,row_number() over (order by your_col)
from your_table group by your_col)as rn where rn = 2
答案 1 :(得分:0)
知道了! 当然,在Stack的帮助下。
select t.*
from (select MAINCOL, col1, col2, col3, col4, DENSE_RANK()OVER(ORDER BY MAINCOL) GROUPID
from tab_1
group by MAINCOL, col1, col2
) t
where GROUPID = 1;