請參閱下表以供參考。我需要返回包含最小值的重複行。返回重複最小值
在這個例子中,我只想顯示2行有SLAT_LEN = 30或者說最小SLAT_LEN。我嘗試了排名,但是當我這樣做時,它的排名是連續的。我希望重複尺寸具有相同的等級並按尺寸連續排列。
大小改變,所以我不能只用一個條件像SLAT_LEN = 30
還是有,我應該採取不同的方法?
select *
from(
select lg.wd_demand_id,wm.slat_len, wm.prof_size, wm.wd_material_id, wm.color, rank() over (partition by wm.slat_len order by lg.wd_demand_id) as rank
from wd_demand_log lg, wd_bins wb, wd_material wm, wd_bins_material wbm
where lg.wd_bins_id = wb.wd_bins_id
and lg.wd_material_id = wm.wd_material_id
and lg.wd_bins_id = wbm.wd_bins_id
and lg.wd_material_id = wbm.wd_material_id
AND lg.plant_id = 44 AND lg.dept_id = 220 AND wb.plant_id = 44 AND wb.dept_id = 220
AND NOT EXISTS(SELECT dmpln.wd_demand_id FROM wd_demnd_pln_inv dmpln WHERE dmpln.wd_demand_id = lg.wd_demand_id)
AND wm.prof_size = '2' AND wm.color = 450
AND lg.wd_po_error is null)
我沒有得到那個排名的事情。爲什麼要用wm.slat_len分區?爲什麼要按lg.wd_demand_id命令?你不是在尋找'rank()over(by wm.slat_len)'嗎? (或者'ORDER BY wm.slat_len如果你有Oracle 12c,請先帶上TIES'行 –
@ThorstenKettner謝謝!我甚至沒有考慮刪除「分區」。那給了我我正在尋找的東西。 –
好的,我會將其作爲回答發佈,以便將來的讀者輕鬆找到解決方案。 –