0

在过去的两天里,我正在使用这两张桌子

零件清单表:

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

谁能告诉我如何从最高优先级的供应商那里检索每个零件的标签?例如,id 为 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; 

但它不会返回预期的结果。

4

1 回答 1

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;
于 2013-08-12T17:58:25.233 回答