我有一个查询,我必须对表格进行排序并检索与每个id匹配的第一个值。SQL选择第一个匹配标准
,我想实现的方案是让表A的,从排序表B
我的代码略有概念第一ID_2匹配的ID。
select A.ID, A.COL1, B.COL1, B.COL2
from A, B
where A.ID = B.ID
and B.ID_2 = (select ID_2
from (select ID_2
from B B2
where B2.ID = A.ID
order by (case when B2.PRIO ...))
where rownum = 1)
这里的问题是在选择where子句中无法访问A.ID。
的另一种方式,我发现用解析函数
select ID, COL1, COL2
from (select A.ID, A.COL1, B.COL2,
row_number() over (partition by A.ID order by (case when B.PRIO ...) row_num
from A, B
where A.ID = B.ID)
where row_num = 1
的问题与此代码是我认为这是不好的表现明智的。
任何人都可以帮助我吗? =)
统计功能?那是什么意思? – mathguy
请显示样本表数据和预期输出。 “不好的表现”是什么意思?请阅读[问]一些提示。 – OldProgrammer
@johngo'我觉得这不是很好的表现'......你为什么这么想?您是否尝试针对您的数据运行这两个查询?你比较执行路径吗? – Boneist