参考のために下表を参照してください。私は最小値を含む重複した行を返す必要があります。重複分の値を返します
この例では、SLAT_LEN = 30または最小SLAT_LENの2行のみを表示したいとします。私はランクを試しましたが、私はそれをすると連続ランクをします。私は重複サイズが同じランクを持ち、サイズによって連続してランク付けされることを望みます。
サイズはので、私はちょうど= 30
SLAT_LENなどの条件を使用することはできませんまたは私が取るべき異なったアプローチがある変更しますか?
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)
私はそのランクのものを取得しません。なぜ 'partition by wm.slat_len'ですか?なぜ '' lg.wd_demand_id'による注文?単純に 'rank()over(order by wm.slat_len)'を探していませんか? (または、ORDER BY wm.slat_lenは、Oracle 12cを使用している場合のために、最初の1行をTIESで取得しますか?) –
@ThorstenKettnerありがとう!私は "パーティションバイ"を削除することを考慮しませんでした。それは私が探していたものを正確に私に与えました。 –
さて、これを回答として投稿しますので、将来の読者は簡単に解決策を見つけることができます。 –