2013-08-12 4 views
0

Я работаю с этими двумя таблицами в течение последних двух днейГруппировка ряд, основанный на поле в другой таблице в оракула

parts_list стол:

PART_ID VENDOR_ID LABEL 
1   5  A 
1   2  B 
1   3  C 
2   2  D 
2   3  E 
3   3  F 

vendor_prsdnc стол:

VENDOR_ID PRSCDNC 
5   3 
2   2 
3   1 

Может ли кто-нибудь рассказать мне, как получить метку каждой части от поставщика с наивысшим приоритетом? Например, часть с идентификатором одного поставляется 3 поставщиков, но нам нужен один из поставщиков с наивысшим приоритетом, т.е. 5. Ожидаемый результат:

PART_ID VENDOR_ID LABEL 
1   5  A 
2   2  D 
3   3  F 

[Vendor Id не пропорционально с преимущественной]

у меня есть этот запрос,

SELECT 
    SDS.PART_ID, 
    SDSIS.VENDOR_ID, 
    MAX(SDSIS.PRSCDNC) 
FROM PARTS_LIST SDS,VENDOR_PRSDNC SDSIS 
WHERE SDS.VENDOR_ID=SDSIS.VENDOR_ID 
GROUP BY SDS.PART_ID,SDSIS.VENDOR_ID; 

но он не возвращает ожидаемый результат.

ответ

1

Не тестировался, но он должен работать я думаю

select part_id,vendor_id,label 
from 
(
select pl.part_id 
     ,pl.vendor_id 
     ,pl.label 
     ,vp.prscdnc 
     ,max(vp.prscdnc) over (partition by pl.part_id) mx 
    from part_list pl,vendor_prsdnc vp 
    where pl.vendor_id=vp.vendor_id 
) 
where prscdnc =mx; 
Смежные вопросы