我有一個查詢,我必須對錶格進行排序並檢索與每個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