1
具有桌子人如何使用自定義順序爲每個子組選擇第一行?
和表PersonRecord
,我需要選擇只有一個每個人的記錄,用最大狀況的記錄。 狀態按C > B > A
排序,一個人可以有多個具有不同或相同狀態的記錄,我總是需要選擇更高的狀態或第一個(如果此人具有相同狀態的記錄)。
我提出以下查詢來獲取行有序
select ep.personid, ep.persondesc, records.veryimportantcode, records.status
from extperson ep
left join
(
select rownum as rn, v.* from
(
select pr.personid, pr.veryimportantcode, pr.status
from personrecord pr
group by pr.personid, pr.veryimportantcode, pr.status
order by pr.personid,
decode(pr.status,
'C', 1,'B', 2,'A', 3,
4)
) v
) records
on ep.personid = records.personid
它給我:
我需要
|PERSONID |PERSONDESC|VERYIMPORTANTCODE |STATUS |
|00325465 |Bjork |(null) |(null) |
|00527513 |Paul |ZP-2143540 |A |
|00542369 |Hazard |ZH-7531594 |C |
|0324567 |Jhon |ZJ-2346570 |B |
我試試這個使用來實現我計算重複次數的附加物化子查詢並與where (subquerymat.nrorepeat > 1 and rownum = 1) or (subquerymat.nrorepeat = 1 or subquerymat.nrorepeat is null)
左加入,但不起作用。
這個查詢有一個非常重要的規則,我會在視圖內的聯合的右側追加這個查詢,然後我不能使用存儲過程。
ORA-00904: 「RN」:ungültigerBezeichner 00904. 00000 - 「%s的:無效的標識符」 – 2017-03-05 23:29:03
@ florian.isopp做你有問題嗎?如果你得到這個錯誤,那麼你可能沒有在你的內聯視圖中顯示的分析功能。事實上,上面的內嵌視圖返回了一個名爲'rn'的列。 – 2017-03-07 00:38:14